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
导出?
感谢您的任何建议!
答案 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)。