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

  1. CREATE DATABASE (SQL Server Transact-SQL)

  2. ALTER DATABASE (Transact-SQL)

  3. RESTORE (Transact-SQL)

  4. BACKUP (Transact-SQL)

  5. sp_attach_db (Transact-SQL)

  6. sp_attach_single_file_db (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  
    

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

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

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

      ALTER SERVER CONFIGURATION  
      SET DIAGNOSTICS LOG PATH = 'C:\logs';  
      

另請參閱

規劃 SQL Server 安裝
安裝的使用說明主題
設定 Windows 服務帳戶與權限