將 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 陳述式和資料庫引擎預存程序支援 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 2014 中使用各種命令列參數選項的詳細資訊,請參閱從命令提示字元安裝 SQL Server 2014。
(SMB 通訊協定與SQL Server) 的作業系統考慮
不同的 Windows 作業系統有不同的 SMB 通訊協定版本,而 SMB 通訊協定版本對於SQL Server而言是透明的。 您可以在 SQL Server 2014 中找到不同 SMB 通訊協定版本的優點。
作業系統 | 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://go.microsoft.com/fwlink/?LinkId=237320)。 |
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 檔案共用資料夾的完整 CONTROL 許可權,或是使用者資料庫目錄、使用者資料庫記錄目錄、TempDB 目錄、TempDB 記錄目錄、叢集安裝期間) 的任何其他資料 (資料夾。
用於安裝 SQL Server 的帳戶應該具有 SMB 檔案伺服器的 SeSecurityPrivilege 權限。 若要授與此權限,請使用檔案伺服器上的 [本機安全性原則] 主控台,將 SQL Server 安裝帳戶新增至 [管理稽核及安全性記錄] 原則中。 在 [本機安全性原則] 主控台中 [本機原則] 下的 [使用者權利指派] 區段可以找到此設定。
已知問題
卸離位於網路連接儲存體上的 SQL Server 2014 資料庫之後,當您嘗試重新附加SQL Server資料庫時,可能會遇到資料庫許可權問題。 此問題定義在此 知識庫文章 中 (https://go.microsoft.com/fwlink/?LinkId=237321) 。 若要暫時解決此問題,請參閱此知識庫文件中的< 其他相關資訊 >。
有些協力廠商 (像是 NetApp 裝置) 未支援所有 SQL Server API 呼叫。 您可以透過下列專案取得:
2015-06-04 13:14:19.97 spid9s 錯誤:17053,嚴重性:16,狀態:1。
2015-06-04 13:14:19.97 spid9s DoDevIoCtlOut () GetOverlappedResult () :作業系統錯誤 1 (不正確的 function.) 。若是 NTFS,此錯誤不會有影響; 但若是 ReFS,則可能導致效能大幅降低。
如果 SMB 檔案共用當作 SQL Server 叢集執行個體的儲存選項使用,則 SQL Server 容錯移轉叢集診斷記錄預設將無法寫入檔案共用,因為 SQL Server 資源 DLL 缺少此檔案共用的讀取/寫入權限。 若要解決這個問題,請嘗試下列其中一個方法:
授與檔案共用的讀取/寫入權限給叢集中的所有電腦物件。
將診斷記錄的位置設定為本機檔案路徑。 請參閱下列範例:
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG PATH = 'C:\logs';