
課程簡介
TPC-H benchmark :
http://www.tpc.org/tpch/results/tpch_advanced_sort.asp?PRINTVER=false&FLTCOL1=h_sf&FLTCOLOPR1=%3D&FLTCHO1=1000&ADDFILTERROW=&filterRowCount=1&SRTCOL1=h_qphh&SRTDIR1=DESC&ADDSORTROW=&sortRowCount=1&DISPRES=100+PERCENT&include_withdrawn_results=none&include_historic_results=no&include_operating_system=ON
/*
RiCo’s Note
https://medium.com/ricos-note
航向Linux新世界
*/
/*
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sa12345678" --name=sql2k19 -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-CTP2.5-ubuntu
WideWorldImporters
https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0
What's new in SQL Server 2019 preview
https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-ver15?view=sqlallproducts-allversions#details
*/
--Enable Scalar UDF Inlining
ALTER DATABASE [WWI]
SET COMPATIBILITY_LEVEL = 150;
ALTER DATABASE SCOPED CONFIGURATION
SET TSQL_SCALAR_UDF_INLINING = ON;
CREATE
OR
ALTER FUNCTION dbo.GetInvoiceLevel (@invoiceID INT)
RETURNS CHAR(10)
--WITH INLINE = ON
AS
BEGIN
DECLARE @totalPrice DECIMAL(18, 2);
DECLARE @category CHAR(10);
SELECT @totalPrice = SUM(UnitPrice)
FROM sales.InvoiceLines
WHERE InvoiceID = @invoiceID;
IF @totalPrice < 10
SET @category = 'REGULAR';
ELSE IF @totalPrice < 100
SET @category = 'GOLD';
ELSE
SET @category = 'PLATINUM';
RETURN @category;
END
--compare performance
--Without inline
SELECT CustomerID
,dbo.GetInvoiceLevel(InvoiceID)
FROM sales.Invoices
WHERE CustomerID > 800
AND CustomerID < 880
ORDER BY CustomerID
OPTION (USE HINT('DISABLE_TSQL_SCALAR_UDF_INLINING'))
--Enable scalar udf inlining
SELECT CustomerID
,dbo.GetInvoiceLevel(InvoiceID)
FROM sales.Invoices
WHERE CustomerID > 800
AND CustomerID < 880
ORDER BY CustomerID
--pure Inline
SELECT CustomerID
,LEVEL = (
SELECT CASE
WHEN SUM(UnitPrice) < 10
THEN 'REGULAR'
WHEN SUM(UnitPrice) < 100
THEN 'GOLD'
ELSE 'PLATINUM'
END
FROM sales.InvoiceLines c
WHERE c.InvoiceID = p.InvoiceID
)
FROM sales.Invoices p
WHERE CustomerID > 800
AND CustomerID < 880
ORDER BY CustomerID
--ADR
--long transaction
use WWI
begin tran
update dbo.Invoices set Comments='test'
where Comments is null
SELECT TOP 256 * FROM sys.dm_tran_top_version_generators --傳回前256的匯總資料
SELECT TOP 256 * FROM sys.dm_tran_version_store --所有versioned store的虛擬資料表
SELECT TOP 256 * FROM sys.dm_tran_persistent_version_store_stats--row versioned store統計資料
SELECT TOP 256 * FROM sys.dm_tran_version_store_space_usage --查看使用空間再tempdb
SELECT * FROM sys.dm_db_index_physical_stats(5, OBJECT_ID('Invoices'), 1, 0, 'DETAILED')
EXEC sp_persistent_version_store;
rollback
go
EXEC sp_persistent_version_cleanup;
use master
ALTER DATABASE [WWI] SET ACCELERATED_DATABASE_RECOVERY = off;
CentOS產品規格:
https://wiki.centos.org/zh-tw/About/Product
CentOS7 download
https://www.centos.org/download/
http://centos.cs.nctu.edu.tw/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
putty download
https://www.putty.org/
mRemoteNG download
https://mremoteng.org/download
#掛載其他硬碟大致流程,新增分區,格式化分區,掛載
$df -h #查看硬碟資訊
$sudo fdisk –l /dev/sdb # 再次確認所要操作硬碟,不要選到安裝硬碟喔
####新增分區####
$sudo ls /dev/sd* #查看目前有多少硬碟
#sda 是第一個磁碟,sdb是第2個磁碟,以此類推
$sudo fdisk /dev/sdb #操作第二個硬碟進行初始化
#m: 顯示說明
#p: 顯示分割區狀態
#a: 指定啟動分割區
#n: 建立分割區
#d: 刪除分割區
#w: 儲存並寫入分割區配置 (在未執行此指令前,所有修改分割區配置都還不會生效)
#q: 退出程式
####格式化分區####
$sudo mkfs.xfs /dev/sdb1
####掛載####
$sudo mkdir /dbdata #建立該目錄對應 /dev/sdb1
$sudo mkdir /dblog #建立該目錄對應 /dev/sdc1
####開機自動掛載####
$sudo mount /dev/sdb1 /dbdata
$sudo mount /dev/sdc1 /dblog
$sudo blkid #查詢每個硬碟的block id,並記下
$sudo vim /etc/fstab #修改fstab
#依序欄位解釋:
#第一欄:硬碟UUID (UUID=98764321-rico-…etc)
#第二欄:預掛載的路徑 (/dbdata)
#第三欄:檔案系統格式 (xfs)
加入以下內容
UUID=98764321-rico-1234-abcd-1234abcd1234 /dbdata xfs defaults 0 0
UUID=98764321-rico-1234-abcd-1234abcd1234 /dblog xfs defaults 0 0
$sudo mount -a #依fstab的記錄自動掛載
$df -h #確認mount的entrypoint
####刪除分區####
$sudo umount /dbdata
$sudo umount /dblog
$sudo fdisk /dev/sdb
輸入 d,w
$df -h #確認
####確認硬體資源-CPU、RAM、Space、分割狀態####
$more /proc/cpuinfo #CPU資訊
$more /proc/meminfo #記憶體的資訊
$more /proc/partitions #磁碟分割狀態資訊
$more /proc/version #linux 版本資訊
$df -h #系統磁碟使用情況資訊
####網路設定和資訊####
$ping getway,dns #都要能正常回應
$ifconfig #NIC設定
####關閉 selinux工作模式 和防火牆####
$sudo vim /etc/sysconfig/selinux #SELINUX 改為 disabled
$sudo systemctl disable firewalld #關閉防火牆
$sudo systemctl stop firewalld #停止防火牆服務
$sudo shutdown -r now #需reboot,selinux才可生效
####遠端登入設定-使用ssh####
#使用putty 或 mRemoteNG測試
$sudo vim /etc/ssh/sshd_config #ssh設定檔案
PermitRootLogin no #禁止 Root 帳號遠端登入
UseDNS no #不啟用 DNS 名稱解析
Port 22111 #修改listen port
$sudo systemctl restart sshd #重新啟動ssh 服務
$sudo systemctl status sshd #確認ssh 服務狀態
$netstat -tunpl #確認sshd的listen port是否真有改為22111
####升級官方伺服器套件####
$cd /etc/yum.repos.d/
$sudo cp CentOS-Base.repo CentOS-Base.repo.bak #要修改來源伺服器改為Hinet IDC前,先備份原先設定檔案
$sudo sed -i 's,mirror.centos.org/centos,mirror01.idc.hinet.net/CentOS,g' CentOS-Base.repo
$sudo yum update –y
####安裝第三方EPEL伺服器套件庫####
$sudo yum -y install epel-release
$sudo yum repolist // refresh
####網路校時設定####
$sudo yum -y install ntp #安裝ntp套件
$sudo vim /etc/ntp.conf #修改ntp 伺服器的設定,將原本的 server 設定註解掉,改為自己指定的 ntp 伺服器
server tock.stdtime.gov.tw
server watch.stdtime.gov.tw
server time.stdtime.gov.tw
server clock.stdtime.gov.tw
server tick.stdtime.gov.tw
$sudo systemctl enable ntpd #開啟ntp 服務
$sudo systemctl start ntpd #啟動ntp 服務
$sudo systemctl status ntpd #確認ntp 服務狀態
$netstat -tlunp | grep ntp #
$sudo ntpq -p #列出目前我們的 ntp 與相關的上層 ntp 的狀態
remote:亦即是 NTP 主機的 IP 或主機名稱囉~注意最左邊的符號
如果有『 * 』代表目前正在作用當中的上層 NTP
如果是『 + 』代表也有連上線,而且可作為下一個提供時間更新的候選者。
refid:參考的上一層 NTP 主機的位址
st:就是 stratum 階層囉!
when:幾秒鐘前曾經做過時間同步化更新的動作;
poll:下一次更新在幾秒鐘之後;
reach:已經向上層 NTP 伺服器要求更新的次數
delay:網路傳輸過程當中延遲的時間,單位為 10^(-3) 秒
offset:時間補償的結果,單位與 10^(-3) 秒
jitter:Linux 系統時間與 BIOS 硬體時間的差異時間, 單位為 10^(-3) 秒
####hyper-v虛擬化平台-調整 I/O Scheduler####
$sudo vim /etc/default/grub #GRUB_CMDLINE_LINUX 結尾加上 elevator=noop
$sudo grub2-mkconfig -o /boot/grub2/grub.cfg #重建 grub.cfg 檔案,如使用UEFI,路徑為 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
#配置的虛擬硬體超過 7 vCPU 或 30GB vRAM,建議加上 numa=off 關閉 NUMA 以最佳化系統運作,GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet elevator=noop numa=off"
####啟用及關閉必要及不需要的服務####
$sudo systemctl list-units --type service |grep running
yum-updatesd 停用 使系統支援 YUM 自動更新服務 (上線機器還是先確認好再更新)
acpid 停用 Advanced Configuration and Power Interface 電源進階設定,常用在 Laptop 上
apmd 停用 Adventage Power Management daemon 偵測系統的電池電量,常用在 Laptop 上
avahi-daemon 停用 當區網沒有 DNS 服務時會試著尋找提供 zeroconf 協定的主機
bluetooth 停用 Bluetooth 藍芽,常用在 Laptop 上
cpuspeed 停用 控制 CPU 速度主要用來省電,常用在 Laptop 上
cups 停用 Common UNIX Printing System 使系統支援印表機
hplip 停用 使系統支援 HP 相關型號印表機
isdn 停用 使系統支援 Integrated Services Digital Network (ISDN) 環境
lm_sensors 停用 使系統支援偵測主機版或硬體,常用在 Laptop 上
pcscd 停用 使系統支援 Smart Card
####修改開啟檔案數量-1024 to 65535####
$sudo ulimit -n 65535 #臨時修改,reboot後,該設定會失效
$sudo vim /etc/security/limits.conf #直接修改設定檔案,讓設定永久生效
$ulimit -a #顯示目前資源限制
* soft nofile 65535 # nofile 表示可開啟檔案數量
* hard nofile 65535
#tools for administrator or monitor
w #顯示使用者目前資訊和相關processes
ps -auxf | sort -nr -k 4 | head -10 #顯示前10最高消費記憶體的processes
ps -auxf | sort -nr -k 3 | head -10 #顯示前10最高消費CPU的processes
iostat #顯示disk活動和平均CPU負載
netstat -tunpl #顯示網路連線統計資料相關資訊,port
ss -u -a #顯示所有tcp 和 udp 使用socket 統計資料
uptime #顯示伺服器已經開機多久時間
tcpdump #更詳細的網路流量分析
tcpdump -i eth0 'tcp and host 192.168.0.X' #擷取eth0上的封包,有tcp且來源或目的ip=192.168.0.X
nmon #相當豐富的系統管理工具
$sudo yum -y install nmon
$nmon
iptraf #顯示即時網路流量資料
$sudo yum -y install iptraf
$sudo iptraf-ng
$cat /etc/*-release
$cat /proc/meminfo
$cat /proc/cupinfo
$df -TH
$getconf -a #取得CentOS系統資訊
$getconf HOST_NAME_MAX #最大長度64
####
#1.設定存放庫
#2.SQL Server Database Engine設定檔初始化
#3.安裝sqlcmd
#4.開啟並啟動SQL Server
#5.驗證SQL Server-正常操作啟動,停止,重新啟動
#6.啟用sqlAgent ,安裝full-text search
####
#1.設定存放庫
#設定新的存放庫,下載SQL Server 2019 repository至mssql-server.repo
$sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-preview.repo
$sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019-gdr.repo
$sudo cat /etc/yum.repos.d/mssql-server.repo #檢視檔案
$sudo rm -rf /etc/yum.repos.d/mssql-server.repo #移除舊的存放庫
$sudo yum makecache #更新你的系統快取,提高搜尋和安裝套件速度
$sudo yum install -y mssql-server #安裝SQL Server
$rpm -qi mssql-server #查看SQL Server套件資訊
#2.SQL Server設定檔初始化
$sudo /opt/mssql/bin/mssql-conf setup
#2.1 選擇開發人員原版本(安裝訊息顯示為evaluation version,可以忽略該訊息)
#2.2 接受授權
#2.3 設定sa(system administrator)密碼
#3.安裝sqlcmd
$sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo #設定mssql tools存放庫
$sudo yum remove mssql-tools unixODBC-utf16-devel #移除任何舊版 unixODBC 套件
$sudo yum install -y mssql-tools unixODBC-devel #安裝mssql 工具unixODBC 開發人員套件
$sudo yum update mssql-tools #更新mssql 工具
$echo 'export PATH=$PATH:/opt/mssql/bin:/opt/mssql-tools/bin' | sudo tee /etc/profile.d/mssql.sh #將/opt/mssql-tools/bin新增至$PATH環境變數並寫入bash_profile
$source /etc/profile #環境變數立即生效
#4.開啟並啟動SQL Server
$sudo systemctl enable mssql-server #開啟
$sudo systemctl start mssql-server #啟動
$sudo systemctl status mssql-server #查看狀態
$sudo systemctl start mssql-server #停用
$sudo systemctl restart mssql-server #重新啟動
#4.1簡單測試
$sqlcmd -S localhost -U SA #使用sa連線本地sql server
####啟用sqlAgent####
#從 SQL Server 2017 CU4 開始,SQL Server Agent 是隨附mssql server封裝,並預設為停用
$sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true #修改SQL Server設定檔,並啟用sqlagent
$sudo systemctl restart mssql-server #需重新啟動SQL Server
$sudo yum update mssql-server-agent #更新,也需重新啟動mssql-server
# sudo yum install mssql-server-agent #安裝
select *
from sysprocesses
where program_name like 'SQLAgent%' --查看sqlaagent processes
####安裝full-text search####
$sudo yum install -y mssql-server-fts #安裝
$sudo yum update mssql-server-fts #更新
####更新SQL Server####
$sudo yum update mssql-server #這些命令會下載最新的套件,並取代二進位檔位於/opt/mssql/。 使用者產生的資料庫和系統資料庫不會受到這項作業。
####復原 SQL Server####
$sudo yum downgrade mssql-server-15.0.1000.34.x86_64 #SQL Server 版本號碼 15.0.1200.24
####解除安裝 SQL Server####
$sudo yum -y remove mssql-server #並不會刪除產生的資料庫檔案
$sudo rm -rf /var/opt/mssql/ #手動刪除的資料庫檔案
####自動的安裝####
$sudo chmod +x installSQLServer.sh #設定為可執行
$sudo ./installSQLServer.sh
#!/bin/bash -e
# Use the following variables to control your install:
# Password for the SA user (required)
MSSQL_SA_PASSWORD='Sa123456'
# Product ID of the version of SQL server you're installing
# Must be evaluation, developer, express, web, standard, enterprise, or your 25 digit product key
# Defaults to developer
MSSQL_PID='developer'
# Install SQL Server Agent (recommended)
SQL_ENABLE_AGENT='y'
# Install SQL Server Full Text Search (optional)
SQL_INSTALL_FULLTEXT='y'
# Create an additional user with sysadmin privileges (optional)
# SQL_INSTALL_USER='<Username>'
# SQL_INSTALL_USER_PASSWORD='<YourStrong!Passw0rd>'
if [ -z $MSSQL_SA_PASSWORD ]
then
echo Environment variable MSSQL_SA_PASSWORD must be set for unattended install
exit 1
fi
echo Adding Microsoft repositories...
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-preview.repo #SQL2019 preview
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
echo Installing SQL Server...
sudo yum install -y mssql-server
echo Running mssql-conf setup...
sudo MSSQL_SA_PASSWORD=$MSSQL_SA_PASSWORD \
MSSQL_PID=$MSSQL_PID \
/opt/mssql/bin/mssql-conf -n setup accept-eula
echo Installing mssql-tools and unixODBC developer...
sudo ACCEPT_EULA=Y yum install -y mssql-tools unixODBC-devel
# Add SQL Server tools to the path by default:
echo Adding SQL Server tools to your path...
echo PATH="$PATH:/opt/mssql-tools/bin" >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# Optional SQL Server Agent installation:
if [ ! -z $SQL_ENABLE_AGENT ]
then
echo Enable SQL Server Agent...
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
fi
# Optional SQL Server Full Text Search installation:
if [ ! -z $SQL_INSTALL_FULLTEXT ]
then
echo Installing SQL Server Full-Text Search...
sudo yum install -y mssql-server-fts
fi
# Configure firewall to allow TCP port 1433:
if [[ 'firewall-cmd --state' = running ]]
then
echo Configuring firewall to allow traffic on port 1433...
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
fi
# Example of setting post-installation configuration options
# Set trace flags 1204 and 1222 for deadlock tracing:
echo Setting trace flags...
sudo /opt/mssql/bin/mssql-conf traceflag 1224 1222 3226 on
# Restart SQL Server after making configuration changes:
echo Restarting SQL Server...
sudo systemctl restart mssql-server
# Connect to server and get the version:
counter=1
errstatus=1
while [ $counter -le 5 ] && [ $errstatus = 1 ]
do
echo Waiting for SQL Server to start...
sleep 5s
/opt/mssql-tools/bin/sqlcmd \
-S localhost \
-U SA \
-P $MSSQL_SA_PASSWORD \
-Q "SELECT @@VERSION" 2>/dev/null
errstatus=$?
((counter++))
done
# Display error if connection failed:
if [ $errstatus = 1 ]
then
echo Cannot connect to SQL Server, installation aborted
exit $errstatus
fi
# Optional new user creation:
if [ ! -z $SQL_INSTALL_USER ] && [ ! -z $SQL_INSTALL_USER_PASSWORD ]
then
echo Creating user $SQL_INSTALL_USER
/opt/mssql-tools/bin/sqlcmd \
-S localhost \
-U SA \
-P $MSSQL_SA_PASSWORD \
-Q "CREATE LOGIN [$SQL_INSTALL_USER] WITH PASSWORD=N'$SQL_INSTALL_USER_PASSWORD', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON; ALTER SERVER ROLE [sysadmin] ADD MEMBER [$SQL_INSTALL_USER]"
fi
echo Done!
$sudo systemctl list-unit-files | grep sql #取得sql相關服務清單
$sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 2048 #設定Linux記憶體限制為2GB
--開啟進階組態選項
USE master;
GO
exec sp_configure 'show advanced options', 1;
reconfigure with override
go
--關閉Cross DB Ownership Chaining
exec sp_configure 'cross db ownership chaining', 0;
go
--修改最大記憶體
exec sp_configure 'max server memory',2048 ;
go
--更新組態選項
reconfigure with override
go
--關閉進階組態選項
exec sp_configure 'show advanced options',0 reconfigure with override
go
$sudo blockdev --report #查看read head設定
$sudo blockdev --getra /dev/sdb1 #查看SQL Server檔案的partition
$sudo blockdev --setra 8192 /dev/sdb1 #read head 修改為8192
$sync
$sudo echo 3 > /proc/sys/vm/drop_caches #清除快取
$sudo yum install -y hdparm #安裝hdparm硬碟測試工具
$sudo rm -f /var/run/yum.pid #當發生lock,可以強制刪除yum process
$sudo hdparm -t /dev/sdb1 #測試硬碟讀取效能
$sudo hdparm -t --direct /dev/sdb1 #測試硬碟寫入效能
$sudo sysctl kernel.sched_min_granularity_ns=10000000
$sudo sysctl kernel.sched_wakeup_granularity_ns=15000000
$sudo sysctl vm.dirty_ratio=40
$sudo sysctl vm.dirty_background_ratio=10
$sudo sysctl vm.swappiness=10
$sudo mkdir /tmp/mssqllog
$sudo chown mssql /tmp/mssqllog #變更擁有者
$sudo chgrp mssql /tmp/mssqllog #變更群組
$sudo mkdir /sqlbackfile
$sudo chown mssql /sqlbackfile
$sudo chgrp mssql /sqlbackfile
$sudo chown mssql /dbdata /dblog
$sudo chgrp mssql /dbdata /dblog
$sudo mkdir /dbdata/masterdbfile
$sudo mkdir /dblog/masterlogfile
$sudo chown mssql /dbdata/masterdbfile /dblog/masterlogfile
$sudo chgrp mssql /dbdata/masterdbfile /dblog/masterlogfile
$sudo /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /sqlbackfile #變更預設備份檔案路徑
$sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /dbdata #變更預設資料檔案路徑
$sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /dblog #變更預設交易紀錄檔案路徑
$sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdumpdir /dbdata #變更預設dump檔案路徑
$sudo /opt/mssql/bin/mssql-conf set filelocation.errorlogfile /tmp/mssqllog/errorlog #變更錯誤紀錄檔案路徑
$sudo /opt/mssql/bin/mssql-conf set filelocation.masterdatafile /dbdata/masterdbfile/master.mdf #變更錯誤紀錄檔案路徑
$sudo /opt/mssql/bin/mssql-conf set filelocation.masterlogfile /dblog/masterlogfile/mastlog.ldf #變更錯誤紀錄檔案路徑
$sudo /opt/mssql/bin/mssql-conf set network.tcpport 50000 #變更port
/*
變更tempdb路徑並切多份檔案
USE tempdb
GO
SELECT *
FROM sys.database_files
ALTER DATABASE tempdb modify FILE (
name = 'tempdev'
,filename = '/dbdata/tempdb.mdf'
,size = 500 MB
)
ALTER DATABASE tempdb ADD FILE (
name = 'tempdev2'
,filename = '/dbdata/tempdb2.ndf'
,size = 500 MB
)
ALTER DATABASE tempdb ADD FILE (
name = 'tempdev3'
,filename = '/dbdata/tempdb3.ndf'
,size = 500 MB
)
ALTER DATABASE tempdb ADD FILE (
name = 'tempdev4'
,filename = '/dbdata/tempdb4.ndf'
,size = 500 MB
)
ALTER DATABASE tempdb modify FILE (
name = 'templog'
,filename = '/dblog/templog.ldf'
,size = 500 MB
)
GO
*/
$sudo systemctl stop mssql-server #停止sql server
$sudo mv /var/opt/mssql/data/master.mdf /dbdata/masterdbfile/master.mdf
$sudo mv /var/opt/mssql/data/mastlog.ldf /dblog/masterlogfile/mastlog.ldf
$sudo systemctl start mssql-server #啟動sql server
$sudo cat /var/opt/mssql/mssql.conf #確認修改內容
$sqlcmd -S localhost,50000 -U sa #測試連接
$sudo /opt/mssql/bin/mssql-conf set sa-password #重設sa密碼
%sudo df -h /dbdata #確認空間是否足夠
$sudo vim /etc/resolv.conf #新增nameserver 168.95.1.1,解決DNS解析問題
$sudo vim /etc/hosts #新增github.com較近地區ip 192.30.253.112 , 主機名稱位置在 /etc/hostname
#https://github.com/Microsoft/sql-server-samples/releases
$cd /sqlbackfile
$sudo curl -LO https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2017.bak
#下載SSMS 18.0 GA 英文版
https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15
--取得資料庫檔案清單資訊
restore filelistonly from disk='/sqlbackfile/AdventureWorks2017.bak'
--開始還原資料庫
restore database [AdventureWorks2017] from disk='/sqlbackfile/AdventureWorks2017.bak'
with recovery,stats=10,
move 'AdventureWorks2017' to '/dbdata/AdventureWorks2017.mdf',
move 'AdventureWorks2017_log' to '/dblog/AdventureWorks2017_log.ldf'
下載SSMS 18.0 GA 英文版
https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15
select *
from Production.Product
--快速取得某資料表所有欄位名稱
拖拉Column資料夾,設定surround object names with brackets dragged =true,替名稱加上[]
--快速建立所有索引scripts
Indexes資料夾->F7->並透過指令碼
--快速取得所有資料表使用空間和總筆數
Tables資料夾->F7->新增相關屬性
--快速篩選資料表(資料表數量過多相當好用)
Tables資料夾->Filter
--快速建立新增陳述句和資料
資料庫物件->Tasks->Generate Scripts->選擇資料表->進階->確認版本->確認資料庫引擎版本和類型->選擇Data Only->產生至查詢新視窗->使用Regex微調scripts
--錯誤紀錄檔案
SELECT SERVERPROPERTY('ErrorLogFileName') AS 'Error log file location' --取得檔案路徑
sp_readerrorlog 0,1,'error' --讀取錯誤紀錄檔案含有error
--使用顏色區分不同環境
連接時,透過選項設定
--同時編輯多行文字
alt+shift+方向鍵
--善用自動復原
Tools -> Options -> Environment -> AutoRecover
--顯示行號和自動斷行
Tools -> Options -> Text Editor -> All Languages -> General -> Line numbers
--顯示preview tooltip
--F1超有感
alt+F1->資料表資訊,等同sp_help , F1->function線上介紹
--善用預先建立TSQL範本
ctrl K+X ,ctrl K+S ->包裝
無法開立統一編號
@公司突然改用 linux ··· 怎麼辦?
別慌!我將帶你從認識、安裝、規劃、設定到優化,通通包辦!
這堂課由 DBA 角度來看 SQL Server on Linux,絕不單單只有實務上工作技巧,更介紹許多 Linux 和 SQL Server 基礎知識,就是要讓你知其然,更知其所以然,減少問題定位和排除時間。
公司為了不付昂貴的授權費,紛紛說著要改用 Linux,但是 ···
Linux 沒有 GUI 介面,對 CLI 又不熟,到底要從何下手?
權限、檔案及Linux kernel 對 SQL Server 效能又要怎麼設定和調整?
難道 SQL Server 在 Linux 上,真的比在 Windows 上難以安裝和設定嗎?
這堂課中,我將為你介紹 Linux 和 SQL Server 跨平台的關鍵技術,讓你在選擇 Linux 平台後有絕對立足點。在 Linux 許多分支中,我們將以 CentOS7 進行基本特性和相關指令說明,並讓初學者了解 SQL Server 的架構及功能。當然,會手把手與你一起規劃、安裝、設定,再優化,避免自己埋下效能地雷而不自知!
@提供優化指令 和 Shell Script 檔
這堂課我將提供獨家相關優化指令,以及 Shell Script 實現自動化安裝!,
當我們要對多個環境進行安裝時,自動化安裝可更有效地節省時間成本與降低安裝風險。
改用 Linux 的三大優點
Linux 省去了 Windows Server 的 GUI 介面,不耗費過多資源,有效地提升效能,且非常穩定。絕對不是因為使用 Linux 比較酷!。世界上 500 個最快的超級電腦高達 90% 以上是執行 Linux ,由此可見 Linux 的高效不容質疑。除此之外, Linux 是開源的且可修改的,不像封閉的 Windows Server 和 Mac OS,任何人都可以自由的使用,或修改其中的原始碼,能夠掌握自己的開發環境!而對於企業而言,Linux 更棒優點在於它是免費的,不需要天價的授權費,能有效節省成本。當然企業有需求時,也意味著市場需要這方面的人才來管理,這時候就是你大顯身手的時機啦!