用户登录失败“NT AUTHORITY \ ANONYMOUS LOGON'”。在sql server中

时间:2014-04-29 07:17:29

标签: sql sql-server sql-server-2008

我几天前发布了related question并提供了答案。

我面临一个奇怪的问题,我有2台服务器,第一台是dev服务器,第二台是QA

当我在dev服务器上执行以下行时,它工作正常,但当我在QA上执行时,它会给我错误Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON',正如我在上一个问题中发布的那样

EXEC master.dbo.xp_cmdshell ‘sqlcmd -D db_name -S server_name -i sqlfile’ 

要解决上述问题,我在上述查询中提供了用户名和密码,并且它在DEVQA服务器上都正常运行。但是提供用户名和密码并不是一个好方法,好像我们将更改服务器或pwd它直接影响我的查询。所以我想在username上不使用pwdQA执行cmdshell命令。

任何人都可以告诉我QA上缺少的内容。我已经在QA

上为cmdshell提供了权限

任何快速帮助

1 个答案:

答案 0 :(得分:0)

这是因为该命令的用户运行时为NT AUTHORITY\ANONYMOUS LOGON,并且此登录名无权访问该数据库。

考虑一下:一切都必须在用户上下文下运行。每个进程都需要一个拥有Windows用户的进程。

您正在运行的SQLCMD - 运行它的Windows用户是谁?不是你。它是SQL Server服务。 (对xp_cmdshell做一些研究)

您首先需要对Windows服务帐户进行一些研究并了解它们是什么。

然后,一些可能的解决方案:

一个。检查您的QA SQL Server服务正在运行(在services.msc的登录选项卡中) B.使用链接服务器而不是your登录 C.您也可以使用某种代理(Windows用户仅为此目的覆盖SQL服务用户)但我没有调查过。