安装 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 文件共享:
安装选项
在安装程序 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 |
|
Windows Server 2008 R2 |
2.1 |
|
Windows Server 2012 |
3.0 |
|
Windows Server 2012 R2 |
3.02 |
|
安全注意事项
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 缺乏对该文件共享的读/写权限。 若要解决此问题,请尝试使用以下方法之一:
将对该文件共享的读/写权限授予群集中的所有计算机对象。
将诊断日志的位置设置为本地文件路径。 请参阅以下示例:
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG PATH = 'C:\logs';