使用sqlcmd脚本我的链接服务器查询无法连接

时间:2015-01-08 16:10:51

标签: sql-server sql-server-2008-r2 linked-server sqlcmd

我在SQL Server 2008 R2中的存储过程在几个本地和几个远程数据库(通过链接服务器)上运行查询,并且当我在SSMS中执行它时工作正常。

当我从sqlcmd脚本运行相同的exec时,链接的服务器连接失败并显示错误...

  

无法初始化OLE DB提供程序的数据源对象" SQLNCLI10"对于链接服务器" BLAHBLAH.BLAH.BLAH.ORG"。

sqlcmd调用是......

sqlcmd -U sa -P myPassword-S localhost 
       -i C:\SS_DB_TRACK\job_run_periodic_nightly.sql 
       -o C:\SS_DB_TRACK\job_run_periodic_nightly.lst

非常感谢有人可以告诉我如何让sqlcmd脚本工作。

2 个答案:

答案 0 :(得分:1)

您看到的差异很可能是由于在不同的安全上下文中运行。您显示的sqlcmd参数显示为sa(通常不是一个好主意)。因此,如果您在SSMS中看到不同的行为,那么您可能正在使用Windows身份验证登录到同一服务器。如果您通过SSMS登录到该服务器,使用SQL Server身份验证作为sa,那么您应该看到相同的错误。在这些相同的行中,如果您将sqlcmd身份验证切换为-E以进行可信连接(即Windows身份验证),那么它应该可以正常工作(事实上,这确实可行)。如果您希望此过程不在安全上下文下运行,那么您需要检查链接服务器的安全设置,以了解两个不同的登录使用链接服务器获得不同响应的原因。理想情况下,您将使用另一个非sa登录进程,甚至可能创建一个Login(即不是 sysadmin服务器角色的成员;-)来处理此问题过程

答案 1 :(得分:0)

尝试[LinkedServerName]

而不是“LinkedServerName”