我正在运行sql server 2008而我正在尝试运行查询
OPEN CUR_InvHeader
FETCH NEXT FROM CUR_InvHeader INTO
@CH_iBilling_Log_RecID
WHILE (@@FETCH_STATUS = 0) BEGIN --Loop for Cur_InvHeader
select * into tarInvoiceDetail_201101 FROM OPENROWSET('SQLNCLI', 'Server=(local);Trusted_Connection=yes;',
'EXEC _sp_cwm5_GetInvoiceDetail @CH_iBilling_Log_RecID')
我收到错误
OLE DB提供程序“SQLNCLI10”用于链接 服务器“(null)”返回消息 “延期准备不可能 完成“。
我已经运行sp_configure'ad hoc ..',1 使用覆盖重新配置 确保我可以对openrecordset
运行select任何想法我可能做错了什么? 提前谢谢
答案 0 :(得分:1)
首先,您的“EXEC _sp_cwm5_GetInvoiceDetail @CH_iBilling_Log_RecID”语句将被评估为常量,而不是将@CH_iBilling_Log_RecID的值传递给OPENROWSET。您必须将整个“SELECT * INTO ...”替换为字符串变量并在其上运行sp_executesql。
第二件事是错误的是你的“select into”语句每次都会创建tarInvoiceDetail_201101,因为INTO在运行时会创建一个新表。因此,如果您的光标覆盖多行,您将在第二次传递时收到错误。
此外,“Server =(local)”代表什么?您是否尝试在连接到远程服务器时对您的SQL Server本地副本使用OPENROWSET?或者您是否尝试使用OPENROWSET来解决您无法直接使用存储过程作为INSERT源的限制?