SQL Server处于联机状态,我正在尝试将数据导出到远程服务器。我正在使用Windows身份验证登录sql服务器。
代码:
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
然后我想知道为什么我xp_cmdshell的bcp出口不起作用?
bcp
感谢您的任何建议!
您正在将命令传递给外部应用程序。
该外部应用程序并不真正了解您或您的命令来自何处。因此,ANONYMOUS LOGON消息。
ANONYMOUS LOGON
您需要告诉命令执行者。看看BoL中的BCP(http://msdn.microsoft.com/zh- cn/library/ms162802.aspx),您会发现一些可能希望添加的参数:
-T 指定bcp实用程序使用集成的安全性通过可信连接连接到SQL Server。 不需要网络用户的安全凭证,login_id和密码。如果未指定“揟”,则需要指定“揢”和“扬”才能成功登录。
-U login_id 指定用于连接到SQL Server的登录ID。
-P 密码 指定登录ID的密码。 如果不使用此选项,则bcp命令提示输入密码。如果在命令提示符的末尾使用此选项而不输入密码,则bcp使用默认密码(NULL)。