如何使用SP_MSforeachdb创建OPENROWSET

时间:2017-05-18 23:11:12

标签: sql sql-server tsql sql-server-2012

假设我有这个查询

      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)"返回消息"延期准备无法完成。"。

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找这个:

declare @sql varchar(max)
  SET @sql = 'USE [?];          
     SET NOCOUNT ON; 
     exec dbo.sp_procedure'
EXEC sp_MSforeachdb @sql