日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

个性化配置你的SQL Server on Linux

發布時間:2023/12/4 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 个性化配置你的SQL Server on Linux 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題引入

這天老鳥滿面春風找到菜鳥:“鳥兒啊,看你最近研究SQL Server On Linux如魚得水,干得不錯啊。不過呢,這是一個張揚個性的年代,要創新,要與眾不同,那你怎么在Linux平臺對SQL Server做個性化的配置吧?比如,我們數據庫文件存放的路徑,備份文件存放的路徑,排序規則等等”。
“鳥哥,今天心情不錯啊,撿到金子啦?得了,這就按您的指示辦去”。

問題分析

老鳥這個需求還是很有現實意義的,比如在Windows平臺,我們會標準化SQL Server數據庫文件存放的路徑,定制化排序規則等。比如:mdf文件會存放在D:\DATA\DBName\SQL目錄,ldf文件會存放在D:\DATA\DBName\LOG目錄下。讓我們看看SQL Server On Linux是怎么張揚它的個性化配置的。

個性化配置

在個性化配置之前,讓我們來看SQL Server On Linux的默認配置是什么樣子。

數據存放位置和排序規則

查看數據庫物理文件的存放位置,只需要訪問視圖sys.master_files,默認排序規則訪問視圖sys.databases。腳本如下:

USE masterGOSELECT database_name = db_name(database_id) ,file_name = name,physical_name FROM sys.master_filesSELECT database_name = name, collation_name FROM sys.databases; ?

查詢結果截圖如下:

這里必須要吐槽,不吐不快,從SSMS查看數據庫的物理位置,有兩點很難理解,當然不知道微軟后續的發版會不會改善:
?Windows是使用反斜線“\”來劃分目錄結構,而Linux系統使用的是正斜線“/”。
?查詢出來的結果集目錄中會強制添加C:盤地址。
最終的對應關系是:Linux上的/var/opt/mssql/data對應于Windows上的目錄C:\var\opt\mssql\data。吐槽截圖如下:

個性化配置腳本

在最開始做個性化配置腳本時候,我所有的這些目錄是放在/var/opt/mssql/data/這個根目錄下,后來發現這種做法有一個很大的坑,后面的“一個深坑”錯誤處理時會講到。后來,我把根目錄放到/data/下,算是踩過了這個坑。這么大的一個深坑,微軟的攻城獅,你出來,我們聊聊,我保證不打殘你。

# vim reconfMSSQLOnLinux.sh#!/bin/sh# --------------------------------------------## purpose: # this script is for MSSQL on Linux# reconfiguration.## --------------------------------------------# change mssql-server listen on 1435 from 1433echo "change mssql-server listen port to 1435"/opt/mssql/bin/mssql-conf set tcpport 1435# Change the default data directory locationecho "change mssql-server default data directory location"mkdir /data/SQL chown mssql /data/SQL && chgrp mssql /data/SQL/opt/mssql/bin/mssql-conf set defaultdatadir /data/SQL# Change the default log directory locationecho "change mssql-server default log directory location"mkdir /data/LOG chown mssql /data/LOG && chgrp mssql /data/LOG/opt/mssql/bin/mssql-conf set defaultlogdir /data/LOG# Change the default dump directory locationecho "change mssql-server default dump directory location"mkdir /data/DUMP chown mssql /data/DUMP && chgrp mssql /data/DUMP/opt/mssql/bin/mssql-conf set defaultdumpdir /data/DUMP# Change the default backup directory locationecho "change mssql-server default backup direcotry location"mkdir /data/BACKUP chown mssql /data/BACKUP && chgrp mssql /data/BACKUP/opt/mssql/bin/mssql-conf set defaultbackupdir /data/BACKUP# Enable/Disable traceflagsecho "mssql-server trace flag 1222 & 1204 enabled"/opt/mssql/bin/mssql-conf traceflag 1222 1204 on# Change the SQL Server collationecho "change mssql-server default collation"/opt/mssql/bin/mssql-conf set-collation[root@localhost ~]# chmod +x reconfMSSQLOnLinux.sh

執行配置腳本

仔細看這個返回結果,也是在根目錄/data/前加了盤符C:,始終覺得怪怪的。最后,輸入新的排序規則確認后,一會兒SQL Server就會完成個性化的設置并重啟。

# sh reconfMSSQLOnLinux.shchange mssql-server listen port to 1435Applying value '1435' to 'tcpport'. Restart of SQL Server is required to apply this setting. Please run 'systemctl restart mssql-server.service' when ready. change mssql-server default data directory location Applying value 'C:\data\SQL' to 'defaultdatadir'. Restart of SQL Server is required to apply this setting. Please run 'systemctl restart mssql-server.service' when ready. change mssql-server default log directory location Applying value 'C:\data\LOG' to 'defaultlogdir'. Restart of SQL Server is required to apply this setting. Please run 'systemctl restart mssql-server.service' when ready. change mssql-server default dump directory location Applying value 'C:\data\DUMP' to 'defaultdumpdir'. Restart of SQL Server is required to apply this setting. Please run 'systemctl restart mssql-server.service' when ready. change mssql-server default backup direcotry location Applying value 'C:\data\BACKUP' to 'defaultbackupdir'. Restart of SQL Server is required to apply this setting. Please run 'systemctl restart mssql-server.service' when ready. mssql-server trace flag 1222 & 1204 enabled Applying traceflag '1222'. Restart of SQL Server is required to apply this setting. Please run 'systemctl restart mssql-server.service' when ready. Applying traceflag '1204'. Restart of SQL Server is required to apply this setting. Please run 'systemctl restart mssql-server.service' when ready. change mssql-server default collation This option will change the collation for SQL Server and RESTART the server. Continue [Yes/No]: Yes Enter the collation: Chinese_PRC_CI_AS

一個深坑

在最開始測試過程中,所有目錄放到根目錄/var/opt/mssql/data/下,執行會出現以下異常信息,無法創建tempdb,錯誤的原因是在C:\data\SQL\目錄下不存在tempdb.mdf文件。第一反應是,什么東西啊?C:\data\SQL\tempdb.mdf?我沒有配置任何文件放到這個目錄啊,還C盤呢?你以為是你的Windows操作系統嗎?
最后聰明伶俐,人見人愛,車間車爆胎的菜鳥,大膽猜測,小心求證,終于搞明白了。反過來猜想,估計微軟這幫攻城獅只截取了最后兩層目錄,比如/var/opt/mssql/data/SQL,他們會把/data/SQL做為數據庫數據文件的存放目錄,實在是令人著急。來看看錯誤信息:

2016-12-14 09:24:35.40 spid6s ? ? ?Error: 5123, Severity: 16, State: 1. 2016-12-14 09:24:35.40 spid6s ? ? ?CREATE FILE encountered operating system error 31(A device attached to the system is not functioning.) while attempting to open or create the physical file 'C:\data\SQL\tempdb.mdf'.2016-12-14 09:24:35.44 spid6s ? ? ?Error: 17204, Severity: 16, State: 1.2016-12-14 09:24:35.44 spid6s ? ? ?FCB::Open failed: Could not open file C:\data\SQL\tempdb.mdf for file number 1. ?OS error: 2(The system cannot find the file specified.).2016-12-14 09:24:35.44 spid6s ? ? ?Error: 5120, Severity: 16, State: 101.2016-12-14 09:24:35.44 spid6s ? ? ?Unable to open the physical file "C:\data\SQL\tempdb.mdf". Operating system error 2: "2(The system cannot find the file specified.)".2016-12-14 09:24:35.45 spid6s ? ? ?Error: 1802, Severity: 16, State: 4.2016-12-14 09:24:35.45 spid6s ? ? ?CREATE DATABASE failed. Some file names listed could not be created. Check related errors.2016-12-14 09:24:35.45 spid6s ? ? ?Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. Check for additional errors in the operating system error log that may indicate why the tempdb files could not be initialized.

截個圖留戀,證明下:

有了這層意思的精神領會以后,解決問題的方法就So easy了。

# mkdir -p /data/SQL# mkdir -p /data/LOG# chown mssql -R /data# chgrp mssql -R /data

再次重試個性化配置腳本sh reconfMSSQLOnLinux.sh,這次總算成功了,謝天謝地。

打開防火墻

為了讓外部客戶端SSMS連接重新配置后的實例,請打開防火墻1435端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=1435/tcp --permanentsuccess[root@localhost ~]# firewall-cmd --reloadsuccess

再次檢查數據存放位置

重新配置完成后,接下來做如下測試:
?創建數據:看看數據庫mdf和ldf文件會不會放到/data/SQL和/data/LOG目錄下。
?備份數據庫:看看數據庫備份文件會不會放到/data/BACKUP目錄。
?排序規則檢查:檢查數據庫是否是新的排序規則Chinese_PRC_CI_AS

create database TestDB2; GOBACKUP DATABASE [TestDB2] TO DISK = N'TestDB2_full_20161213.bak' WITH NOFORMAT, NOINIT, NAME = 'TestDB2-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10BACKUP LOG [TestDB2] TO ?DISK = N'TestDB2_LogBackup_20161213.bak' WITH NOFORMAT , NOINIT, ?NAME = N'TestDB2_LogBackup_2016-12-13', NOSKIP, NOREWIND, NOUNLOAD , ?STATS = 5GOUSE masterGOSELECT database_name = db_name(database_id) ,file_name = name,physical_name FROM sys.master_filesSELECT database_name = name, collation_name FROM sys.databases; ?

查詢結果展示如下:

使用Linux的tree命令看看/data目錄文件結構,如下圖展示:

從SSMS查詢結果和Linux目錄結構來看,所有現象都滿足預期,菜鳥對SQL Server On Linux進行了個性化配置。

寫在最后

過程歷經艱辛,但最終我們到達了成功的彼岸,總算對SQL Server On Linux進行了個性化的配置。就像我們最開始研究Linux版SQL Server說的那樣,他還是只個剛出生的孩子,還有很多不完善的地方,甚至看起來還有點怪異。但是,讓我們充滿期望,給予寬容和友善讓他茁壯成長。

?

相關文章:?

  • SQL Server 急救包(First Responder Kit)入門教程

  • SQL Server on Linux 理由淺析

  • SQLServer On Linux Package List on CentOS

  • SQL Server on Linux的文件和目錄結構

原文地址:https://yq.aliyun.com/articles/67204


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的个性化配置你的SQL Server on Linux的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。