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