將 SQL Server 與 SMB Fileshare 當做儲存選項一起安裝
從 SQL Server 2012 開始,系統資料庫 (Master、Model、MSDB 和 TempDB) 與 Database Engine 使用者資料庫可以當做儲存選項與伺服器訊息區塊 (SMB) 檔案伺服器一起安裝。 這同時適用於 SQL Server 獨立安裝和 SQL Server 容錯移轉叢集安裝 (FCI)。
[!附註]
SMB 檔案共用目前不支援檔案資料流。
安裝考量
SMB 檔案共用格式:
指定 SMB 檔案共用時,支援獨立和 FCI 資料庫的通用命名慣例 (UNC) 路徑格式如下:
\\ServerName\ShareName\
\\ServerName\ShareName
如需有關通用命名慣例的詳細資訊,請參閱 UNC (https://go.microsoft.com/fwlink/?LinkId=245534)。
不建議使用回送 UNC 路徑 (伺服器名稱為 localhost (127.0.0.1) 的 UNC 路徑,或是本機電腦名稱)。 使用檔案伺服器叢集的 SQL Server (裝載於 SQL Server 執行的相同節點上) 也不受支援,這是特殊案例。 為了避免這個狀況發生,建議將 SQL Server 和檔案伺服器叢集建立在不同的 Windows 叢集上。
底下的 UNC 路徑格式不受支援:
回送路徑,例如 \\localhost\.. \ 或 \\127.0.0.1\... \
管理共用,例如 \\servername\x$
其他 UNC 路徑格式,例如 \\? \x:\
對應的網路磁碟機。
支援的資料定義語言 (DDL) 陳述式
以下的 Transact-SQL DDL 陳述式和 Database Engine 預存程序支援 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
若要與 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 2012 中使用各種命令列參數選項的詳細資訊,請參閱<從命令提示字元安裝 SQL Server 2012>。
作業系統考量 (SMB 通訊協定與SQL Server 的比較)
不同的 Windows 作業系統有不同的 SMB 通訊協定版本,而且 SMB 通訊協定版本對於 SQL Server 而言是透明的。 您可以找到不同 SMB 通訊協定版本相對於 SQL Server 2012 的優點。
作業系統 |
SMB2 通訊協定版本 |
對 SQL Server 的好處 |
---|---|---|
Windows Server 2008 |
2.0 |
|
Windows Server 2008 R2 |
2.1 |
|
Windows Server 2012 |
3.0 |
|
Windows Server 2012 R2 |
3.02 |
|
安全性考量
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 2012 資料庫之後,當您嘗試重新附加 SQL Server 資料庫時,可能會遇到資料庫權限問題。 此知識庫文件 (https://go.microsoft.com/fwlink/?LinkId=237321) 中有定義這個問題。 若要暫時解決此問題,請參閱此知識庫文件中的<其他相關資訊>。
如果 SMB 檔案共用當做 SQL Server 叢集執行個體的儲存選項使用,則 SQL Server 容錯移轉叢集診斷記錄預設將無法寫入檔案共用,因為 SQL Server 資源 DLL 缺少此檔案共用的讀取/寫入權限。 若要解決這個問題,請嘗試下列其中一個方法:
授與檔案共用的讀取/寫入權限給叢集中的所有電腦物件。
將診斷記錄的位置設定為本機檔案路徑。 請參閱下列範例:
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG PATH = 'C:\logs';