假设我有这个查询
declare @sql varchar(max)
SET @sql = 'USE [?];
insert into table
SELECT *
FROM OPENROWSET( ''SQLNCLI'',
''Server=SERBERNAME;Trusted_Connection=yes;'',
''SET FMTONLY OFF; SET NOCOUNT ON; exec db_name().dbo.sp_procedure''
) '
EXEC sp_MSforeachdb @sql
如您所知,sp_MSforeachdb
用于在所有数据库中运行过程。
在上述问题中,出于多种原因,我必须使用OPENROWSET
。
但是,在OPENROWSET
中,您必须指定数据库名称,以便它正确运行。我如何在每个数据库上进行上述工作(以某种方式使用db_name()
)?
目前错误是:
OLE DB提供程序" SQLNCLI10"对于链接服务器"(null)"返回消息"延期准备无法完成。"。
答案 0 :(得分:0)
我认为你正在寻找这个:
declare @sql varchar(max)
SET @sql = 'USE [?];
SET NOCOUNT ON;
exec dbo.sp_procedure'
EXEC sp_MSforeachdb @sql