我花了一整天的时间试图解决这个问题并准备好帮助。
我正在尝试使用以下代码。 (由于显而易见的原因,用户和通行证被遗漏) 我正在从SSMS运行查询,并希望获取存储过程的内容并将其放在临时表中。你可以修改我的查询,以便它的工作原理。 :)
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
SELECT * INTO #MyTempTable FROM OPENROWSET('SQLNCLI', 'Server=SQL01\SQL2008R2;Database=ExtData;
Uid=xxxx;Pwd=xxxx',
'EXEC sp_MonthlyInventoryStock')
这是我得到的错误:
配置选项'show advanced options'从1更改为1.运行RECONFIGURE语句进行安装 配置选项'Ad Hoc Distributed Queries'从1更改为1.运行RECONFIGURE语句进行安装 OLE DB提供程序“SQLNCLI10”用于链接服务器“(null)”返回消息“无效的授权规范” OLE DB提供程序“SQLNCLI10”用于链接服务器“(null)”返回消息“无效的连接字符串属性”。
Msg 7399,Level 16,State 1,Line 3
链接服务器“(null)”的OLE DB提供程序“SQLNCLI10”报告错误。身份验证失败 Msg 7303,Level 16,State 1,Line 3
无法为链接服务器“(null)”初始化OLE DB提供程序“SQLNCLI10”的数据源对象。
答案 0 :(得分:10)
先生。 Reband回答了这个问题。看起来连接字符串必须全部在同一行。
你还需要包括'SET FMTONLY OFF;并让S.P.将NOCOUNT设置为ON。
最终答案(连接字符串全部在一行上):
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
SELECT * INTO #MyTempTable
FROM OPENROWSET('SQLNCLI'
,'Server=SQL01\SQL2008R2;Database=ExtData;Uid=xxxx;Pwd=xxxx'
,'SET FMTONLY OFF;SET NOCOUNT ON;EXEC sp_MonthlyInventoryStock')
GO
答案 1 :(得分:0)
就我而言,问题是由连接字符串中的额外空间引起的。
(局部); 空格强>可信
不工作:
SELECT *
FROM OPENROWSET ('SQLNCLI','Server=(local); TRUSTED_CONNECTION=YES;'
,'exec master.dbo.sp_who')
工作一次
SELECT *
FROM OPENROWSET ('SQLNCLI','Server=(local);TRUSTED_CONNECTION=YES;'
,'exec master.dbo.sp_who')