带有帐户NT Service \ MSSQLSERVER访问的SQL Server 2012在域中被拒绝

几个月前我们在Windows 2008 R2的虚拟帐户“ NT Service \ MSSQLSERVER ”下安装SQL Server 2012,都很好。

几天前,IT部门的一个pipe理员在SQL Server 2012中安装了全文search组件(问题是他无法记得他在安装过程中select的是什么设置),之后出现了很多问题:

答:我们检查了Windows日志,在Application中,我们发现MSSQLServer有相当多的exception日志,如:

SQL Servernetworking接口库无法为SQL Server服务注册服务主体名称(SPN)[MSSQLSvc / FooComputer.FooDomain.com:1433]。 Windows返回代码:0xffffffff,状态:63.注册SPN失败可能会导致集成身份validation使用NTLM而不是Kerberos。 这是一条信息消息。 如果身份validation策略要求使用Kerberos身份validation,并且尚未手动注册SPN,则只需进一步操作。

这似乎是原因,但不知道为什么以及如何解决它。

B.域名用户(如“MyDomain \ FooUser”)的所有者的SQL作业将失败,并显示以下消息:

工作失败了。 无法确定作业JOBNAME的所有者(MyDomain \ FooUser)是否具有服务器访问权限(原因:无法获取有关Windows NT组/用户'MyDomain \ FooUser',错误代码0x6e [SQLSTATE 42000](错误15404))的信息。

我们进行了大量的search,最后用“sa”取代了所有者,并解决了问题,尽pipe这并不合适。 不过,我们想知道为什么。

C.不能像其他计算机中的文件夹那样访问networking资源,例如,下面的sql将返回“access is denied”:

DECLARE @CopyCommand nvarchar(1000) set @CopyCommand = 'dir ' + Char(34) + '\\FooComputer\FooFolder\' + Char(34) EXEC master..xp_cmdshell @CopyCommand 

对于问题C,根据MSDN( http://technet.microsoft.com/en-us/library/ms143504.aspx ),我们试图授予帐户“MyDomain \ SQLServerComputerName $”完全控制权限到文件夹,仍然是相同的结果。

这三个问题都是运行SQL服务的帐户不是域帐户的结果,它们都将通过更改SQL以在域帐户下运行来纠正。 特别:

A – SPN是需要域帐户的Kerberos安全function,不能与本地帐户一起使用

B – 为了从活动目录中读取,该服务需要一个域帐户的凭证

C – 本地帐户不被远程计算机识别,因此它们拒绝连接尝试。

以下是如何更改服务帐户的步骤:

http://technet.microsoft.com/en-us/library/ms345578.aspx

当我们遇到这个问题,我们的解决scheme是find该文件夹​​,并添加所需的虚拟帐户所需的权限。 一旦我们添加了账户,只要input账户,我们监控了日志文件,发现我们不再有这个文件夹/文件的问题。