安裝 SQL Server 與 SMB 檔案共用儲存體
適用於:SQL Server - 僅限 Windows
從 SQL Server 2012 (11.x) 開始,系統資料庫 (master、model、msdb 和 tempDB) 與資料庫引擎使用者資料庫,可以用儲存選項的方式,與伺服器訊息區 (SMB) 檔案伺服器一起安裝。 這一點同時適用於 SQL Server 獨立和 SQL Server 容錯移轉叢集安裝 (FCI)。
注意
SMB 檔案共用目前不支援檔案資料流。
安裝考量
SMB 檔案共用格式:
指定 SMB 檔案共用時,支援獨立和 FCI 資料庫的通用命名慣例 (UNC) 路徑格式如下:
\\ServerName\ShareName\
\\ServerName\ShareName
如需通用命名慣例的詳細資訊,請參閱 UNC。
不建議使用回送 UNC 路徑 (伺服器名稱為 localhost (127.0.0.1) 的 UNC 路徑,或是本機電腦名稱)。 使用檔案伺服器叢集的 SQL Server (裝載於 SQL Server 執行的相同節點上) 也不受支援,這是特殊案例。 為了避免這個狀況發生,建議將 SQL Server 和檔案伺服器叢集建立在不同的 Windows 叢集上。
下列的 UNC 路徑格式不受支援:
Loopback 路徑,例如
\\localhost\...\
或\\127.0.0.1\...\
系統管理共用,例如
\\servername\x$
其他 UNC 路徑格式,例如
\\?\x:\
連線的網路磁碟機
支援的資料定義語言 (DDL) 陳述式
以下的 Transact-SQL DDL 陳述式和資料庫引擎預存程序支援 SMB 檔案共用:
安裝選項
在安裝程式 UI [資料庫引擎設定] 頁面的 [資料目錄] 索引標籤中,將 [資料根目錄] 參數設定為 "\\fileserver1\share1"。
在命令提示字元安裝中,將 "/INSTALLSQLDATADIR" 指定為 "\\fileserver1\share1"。
以下是使用 SMB 檔案共用選項在獨立伺服器上安裝 SQL Server 的範例語法:
Setup.exe /q /ACTION=Install /FEATURES=SQL /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="<DomainName\UserName>" /SQLSVCPASSWORD="<StrongPassword>" /SQLSYSADMINACCOUNTS="<DomainName\UserName>" /AGTSVCACCOUNT="<DomainName\UserName>" /AGTSVCPASSWORD="<StrongPassword>" /INSTALLSQLDATADIR="\\FileServer\Share1\" /IACCEPTSQLSERVERLICENSETERMS
從 SQL Server 2022 (16.x) 開始,請閱讀 Microsoft SQL Server 軟體授權條款,網址為 aka.ms/useterms。
若要與 Database Engine 和 Analysis Services 預設執行個體一起安裝單一節點 SQL Server 容錯移轉叢集執行個體:
setup.exe /q /ACTION=InstallFailoverCluster /InstanceName=MSSQLSERVER /INDICATEPROGRESS /ASSYSADMINACCOUNTS="<DomainName\UserName>" /ASDATADIR=<Drive>:\OLAP\Data /ASLOGDIR=<Drive>:\OLAP\Log /ASBACKUPDIR=<Drive>:\OLAP\Backup /ASCONFIGDIR=<Drive>:\OLAP\Config /ASTEMPDIR=<Drive>:\OLAP\Temp /FAILOVERCLUSTERDISKS="<Cluster Disk Resource Name - for example, 'Disk S:'" /FAILOVERCLUSTERNETWORKNAME="<Insert Network Name>" /FAILOVERCLUSTERIPADDRESSES="IPv4;xx.xxx.xx.xx;Cluster Network;xxx.xxx.xxx.x" /FAILOVERCLUSTERGROUP="MSSQLSERVER" /Features=AS,SQL /ASSVCACCOUNT="<DomainName\UserName>" /ASSVCPASSWORD="xxxxxxxxxxx" /AGTSVCACCOUNT="<DomainName\UserName>" /AGTSVCPASSWORD="xxxxxxxxxxx" /INSTALLSQLDATADIR="\\FileServer\Share1\" /SQLCOLLATION="SQL_Latin1_General_CP1_CS_AS" /SQLSVCACCOUNT="<DomainName\UserName>" /SQLSVCPASSWORD="xxxxxxxxxxx" /SQLSYSADMINACCOUNTS="<DomainName\UserName> /IACCEPTSQLSERVERLICENSETERMS
如需在 SQL Server 中使用各種命令列參數選項的詳細資訊,請參閱從命令提示字元安裝 SQL Server 2016。
作業系統考量 (SMB 通訊協定與 SQL Server)
不同的 Windows 作業系統有不同的 SMB 通訊協定版本,而且 SMB 通訊協定版本對於 SQL Server 而言是透明的。 您可以找到不同 SMB 通訊協定版本相對於 SQL Server 的優點。
作業系統 | SMB2 通訊協定版本 | 對 SQL Server 的好處 |
---|---|---|
Windows Server 2008 SP 2 | 2.0 | 相較於舊版 SMB,新版中已改良效能。 持久性,有助於從暫時性網路問題復原。 |
Windows Server 2008 R2 SP 1,包括 Server Core | 2.1 | 支援大型 MTU,有助於大型資料傳送,例如 SQL 備份和還原。 此功能必須由使用者啟用。 如需啟用此功能的詳細資訊,請參閱 SMB 中的新功能 (https://go.microsoft.com/fwlink/?LinkID=237319)。 大幅改良效能,特別是針對 SQL OLTP 樣式工作負載方面。 這些效能改良需要套用 Hotfix。 如需修正程式的詳細資訊,請參閱本文 (https://mskb.pkisolutions.com/kb/2536493)。 |
Windows Server 2012,包括 Server Core | 3.0 | 支援以透明方式容錯移轉檔案共用,不需任何停機時間,而且系統管理員也不需要介入檔案伺服器叢集組態的 SQL DBA 或檔案伺服器管理員。 支援同時使用多網路介面的 IO,並容忍網路介面失敗。 支援具有 RDMA 功能的網路介面。 如需這些功能和伺服器訊息區塊的詳細資訊,請參閱伺服器訊息區塊概觀 (https://go.microsoft.com/fwlink/?LinkId=253174)。 支援向外延展檔案伺服器 (SoFS) 的持續可用性。 |
Windows Server 2012 R2,包括 Server Core | 3.2 | 支援以透明方式容錯移轉檔案共用,不需任何停機時間,而且系統管理員也不需要介入檔案伺服器叢集組態的 SQL DBA 或檔案伺服器管理員。 利用 SMB Multichannel,支援同時使用多網路介面的 IO,並容忍網路介面失敗。 利用 SMB Direct 支援具有 RDMA 功能的網路介面。 如需這些功能和伺服器訊息區塊的詳細資訊,請參閱伺服器訊息區塊概觀 (https://go.microsoft.com/fwlink/?LinkId=253174)。 支援向外延展檔案伺服器 (SoFS) 的持續可用性。 最佳化對 SQL Server OLTP 的常用小型隨機讀取/寫入 I/O。 預設會啟動最大傳輸單位 (MTU),可大幅提高大型循序傳送的效能,例如 SQL Server 資料倉儲及資料庫備份或還原。 |
安全性考量
SQL Server 服務帳戶和 SQL Server Agent 服務帳戶應該擁有 SMB 共用資料夾的 FULL CONTROL 共用權限及 NTFS 權限。 如果使用 SMB 檔案伺服器,SQL Server 服務帳戶可以是網域帳戶或系統帳戶。 如需共用和 NTFS 權限的詳細資訊,請參閱檔案伺服器的共用及 NTSF 權限 (https://go.microsoft.com/fwlink/?LinkId=245535)。
注意
SMB 共用資料夾的 FULL CONTROL 共用權限及 NTFS 權限僅限於:SQL Server 服務帳戶、SQL Server Agent 服務帳戶以及具有管理伺服器角色的 Windows 使用者。
建議使用網域帳戶當作 SQL Server 服務帳戶。 如果將系統帳戶當作服務帳戶使用,請以下列格式授與電腦帳戶的權限:<domain_name>\<computer_name>*$*。
注意
在 SQL Server 安裝期間,如果將 SMB 檔案共用指定為儲存選項,則必須將網域帳戶指定為服務帳戶。 在 SMB 檔案共用中,系統帳戶只能指定為服務帳戶後續 SQL Server 安裝。
虛擬帳戶無法對遠端位置驗證。 所有虛擬帳戶都使用電腦帳戶的權限。 使用下列格式提供電腦帳戶:<domain_name>\<computer_name>*$*。
在叢集安裝期間,用來安裝 SQL Server 的帳戶應該擁有當作資料目錄使用之 SMB 檔案共用資料夾,或是其他任何資料夾 (使用者資料庫目錄、使用者資料庫記錄檔目錄、tempdb 目錄、tempdb 記錄檔目錄、備份目錄) 的 FULL CONTROL 權限。
用於安裝 SQL Server 的帳戶應該具有 SMB 檔案伺服器的 SeSecurityPrivilege 權限。 若要授與此權限,請使用檔案伺服器上的 [本機安全性原則] 主控台,將 SQL Server 安裝帳戶新增至 [管理稽核及安全性記錄] 原則中。 在 [本機安全性原則] 主控台中 [本機原則] 下的 [使用者權利指派] 區段可以找到此設定。
已知問題和限制
在您卸離位於連線網路之儲存裝置上的 SQL Server 資料庫之後,當您嘗試重新附加 SQL Server 資料庫時,可能會遇到資料庫權限問題。 如需詳細資訊,請參閱錯誤 5120。
如果 SMB 檔案共用當作 SQL Server 叢集執行個體的儲存選項使用,則 SQL Server 容錯移轉叢集診斷記錄預設將無法寫入檔案共用,因為 SQL Server 資源 DLL 缺少此檔案共用的讀取/寫入權限。 若要解決這個問題,請嘗試下列其中一個方法:
授與檔案共用的讀取/寫入權限給叢集中的所有電腦物件。
將診斷記錄的位置設定為本機檔案路徑。 請參閱下列範例:
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG PATH = 'C:\logs';
在 SMB 檔案共用上裝載 SQL Server 資料檔案時,對檔案進行的所有 I/O 都會經過伺服器上的網路介面,或是虛擬機器。 請確保有足夠的網路頻寬來支援工作負載所需的 I/O。
如果因為網路連線問題或其他故障,而使裝載 SQL Server 資料檔案的檔案共用無法使用時,可能會導致 SQL Server 中的 I/O 延遲或失敗。 針對任務關鍵性工作負載,請確保網路和檔案共用有內建備援,且檔案共用支援 SMB 3.0 透明容錯移轉,這又稱為持續可用性。