安裝 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 檔案共用:

  1. CREATE DATABASE (SQL Server Transact-SQL)

  2. ALTER DATABASE (Transact-SQL)

  3. RESTORE (Transact-SQL)

  4. BACKUP (Transact-SQL)

安裝選項

  • 在安裝程式 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 缺少此檔案共用的讀取/寫入權限。 若要解決這個問題,請嘗試下列其中一個方法:

    1. 授與檔案共用的讀取/寫入權限給叢集中的所有電腦物件。

    2. 將診斷記錄的位置設定為本機檔案路徑。 請參閱下列範例:

      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 透明容錯移轉,這又稱為持續可用性

另請參閱

規劃 SQL Server 安裝
設定 Windows 服務帳戶與權限