用户NT授权/匿名登录的BCP导出登录失败

时间:2014-09-15 13:31:13

标签: sql sql-server

SQL Server在线,我正在尝试将数据导出到远程服务器。我正在使用Windows身份验证登录sql server。

代码:

declare @sql1 varchar(8000), @asofdate varchar(50)

set @asofdate = convert(varchar,getdate()-1,112) + '.csv'

select @sql1 = 'bcp DB1.dbo.Table1 out C:\exp\test' + @asofdate  + ' -c -t, -T -S'+ '.\SQL2005'
exec master.. xp_cmdshell @sql1

但我收到错误

  

[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。

如果我尝试

exec xp_cmdshell 'del C:\exp\*.csv'

代码工作正常。所以我认为我可以访问xp_cmdshell

然后我想知道为什么我的xp_cmdshell不能用于bcp导出?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:2)

您将命令传递给外部应用程序。

这个外部应用程序并不真正了解您,或者您的命令来自何处。因此ANONYMOUS LOGON消息。

您需要告诉命令执行者。看看BoL中的BCP(http://msdn.microsoft.com/en-us/library/ms162802.aspx),你会发现一些你可能希望添加的参数:

<强> -T 指定bcp实用程序使用集成安全性使用可信连接连接到SQL Server。不需要网络用户的安全凭证,login_id和密码。如果未指定-T,则需要指定-U和-P才能成功登录。

-U login_id 指定用于连接SQL Server的登录ID。

-P 密码 指定登录ID的密码。如果未使用此选项,则bcp命令会提示输入密码。如果在没有密码的命令提示符末尾使用此选项,则bcp使用默认密码(NULL)。