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

从 SQL Server 2012 开始,在安装系统数据库(Master、Model、MSDB 和 TempDB)和数据库引擎用户数据库时可以选择 Server Message Block (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 (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
    

    安装带数据库引擎和 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 而言是透明的。 您可以就 SQL Server 2012 而言发现不同 SMB 协议版本的好处。

操作系统

SMB2 协议版本

对 SQL Server 的好处

Windows Server 2008

2.0

  • 与以前的 SMB 版本相比改进的性能。

  • 持久性,帮助从临时网络问题恢复。

Windows Server 2008 R2

2.1

  • 支持大型 MTU,这有利于大型数据传输,例如 SQL 备份和还原。 此功能必须由用户启用。 有关如何启用此功能的详细信息,请参阅 SMB 中的新增功能 (https://go.microsoft.com/fwlink/?LinkID=237319)。

  • 针对 SQL OLTP 样式工作负荷的显著的性能改进。 这些性能改进要求应用修补程序。 有关修补程序的详细信息,请参阅此处 (https://go.microsoft.com/fwlink/?LinkId=237320)。

Windows Server 2012

3.0

  • 支持文件共享的透明故障转移,提供零停机时间,并且在文件服务器群集配置中,无需 SQL DBA 或文件服务器管理员参与。

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

  • 支持具有 RDMA 功能的网络接口。

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

  • 对具有连续可用性的向外扩展文件服务器 (SoFS) 的支持。

Windows Server 2012 R2

3.02

  • 支持文件共享的透明故障转移,提供零停机时间,并且在文件服务器群集配置中,无需 SQL DBA 或文件服务器管理员参与。

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

  • 使用 SMB 定向支持具有 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 日志目录、备份目录)具有 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 缺乏对该文件共享的读/写权限。 若要解决此问题,请尝试使用以下方法之一:

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

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

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

请参阅

参考

配置 Windows 服务帐户和权限

概念

计划 SQL Server 安装

其他资源

安装操作指南主题