小编典典

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

sql

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_cmdshellbcp出口不起作用?

感谢您的任何建议!


阅读 176

收藏
2021-03-17

共1个答案

小编典典

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

该外部应用程序并不真正了解您或您的命令来自何处。因此,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)。

2021-03-17