安装 SQL Server,并使用 SMB 文件共享作为存储选项

从 2012 SQL Server开始,系统数据库 (Master、Model、MSDB 和 TempDB) ,数据库引擎用户数据库可以使用服务器消息块 (SMB) 文件服务器作为存储选项进行安装。 这同时适用于 SQL Server 独立安装和 SQL Server 故障转移群集安装 (FCI)。

注意

当前 SMB 文件共享上不支持 Filestream。

安装注意事项

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 所运行的同一节点上,则也不受支持。 若要防止出现这种情况,建议在单独的 Windows 群集中创建 SQL Server 与文件服务器群集。

不支持以下 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  
    

    安装具有 SQL Server 和 数据库引擎 的单节点 Analysis Services故障转移群集实例(默认实例):

    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 2008 Server 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 样式工作负荷的显著的性能改进。 这些性能改进要求应用修补程序。 有关修补程序的详细信息,请参阅此文 (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 或文件服务器管理员参与。

支持同时使用多个网络接口的 IO,并且使用 SMB 多通道可承受网络接口故障。

使用 SMB Direct 支持具有 RDMA 功能的网络接口。

有关这些功能和服务器消息块的详细信息,请参阅 服务器消息块概述 (https://go.microsoft.com/fwlink/?LinkId=253174)。

通过持续可用性支持向外扩展文件服务器 (SoFS)。

针对 SQL Server OLTP 所共有的小型随机读/写 I/O 进行优化。

默认情况下启用最大传输单位 (MTU),这可以显著增强大型连续传输(例如 SQL Server 数据仓库和数据库备份或还原)的性能。

安全注意事项

  • SQL Server 服务帐户和 SQL Server 代理服务帐户应具有对 SMB 共享文件夹的 FULL CONTROL 共享权限和 NTFS 权限。 使用 SMB 文件服务器时, SQL Server 服务帐户可以是域帐户或系统帐户。 有关共享和 NTFS 权限的详细信息,请参阅 文件服务器上的共享和 NTFS 权限 (https://go.microsoft.com/fwlink/?LinkId=245535)。

    注意

    SMB 共享文件夹的 FULL CONTROL 共享权限和 NTFS 权限应限制为:SQL Server服务帐户、SQL Server 代理服务帐户和具有管理员服务器角色的 Windows 用户。

    建议将域帐户用作 SQL Server 服务帐户。 如果将系统帐户用作服务帐户,请以以下格式授予计算机帐户的权限: <domain_name>\<computer_name>$

    注意

    • 在 SQL Server 安装过程中,如果 SMB 文件共享指定为存储选项,则需要将域帐户指定为服务帐户。 对于 SMB 文件共享,在 SQL Server 安装后系统帐户只能指定为服务帐户。
    • 虚拟帐户无法通过身份验证,因而无法访问远程位置。 所有虚拟帐户均使用计算机帐户的权限。 以 <domain_name><computer_name>\$ 格式设置计算机帐户。
  • 用于安装SQL Server的帐户应对用作数据目录的 SMB 文件共享文件夹或群集安装期间 (用户数据库目录、用户数据库日志目录、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 (遇到不正确的函数.) 。

    对于 NTFS,该错误不会产生任何影响。 但对于 ReFS,该错误则可能会导致性能明显下降。

  • 如果将 SMB 文件共享作为 SQL Server群集实例的存储选项,默认情况下无法将 SQL Server 故障转移群集诊断日志写入该文件共享,因为 SQL Server 资源 DLL 缺乏对该文件共享的读/写权限。 若要解决此问题,请尝试使用以下方法之一:

    1. 将对该文件共享的读/写权限授予群集中的所有计算机对象。

    2. 将诊断日志的位置设置为本地文件路径。 请参阅以下示例:

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

另请参阅

计划 SQL Server 安装
安装操作指南主题
配置 Windows 服务帐户和权限