2017-05-18 41 views
0

假設我有此查詢如何使OPENROWSET工作,sp_MSforeachdb

 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名稱,以便其正確運行。我怎樣才能使上面的每一個數據庫工作(使用某種方式db_name())?

目前的錯誤是:

OLE DB提供程序 「SQLNCLI10」 鏈接服務器 「(空)」 返回了消息 「延遲準備,無法完成。」

+0

/你正試圖循環中的所有數據庫的服務器,那麼爲什麼你需要OPENROWSET? –

+0

@KannanKandasamy,剛剛更新後。我想從SP中插入表格內容。如果我執行insert..exec,則會拋出無法執行嵌套insert..exec的錯誤。所以,我試圖在這裏使用OPENROWSET – Sher

回答

0

我認爲你正在尋找這樣的:

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

只是更新後。我想從SP中插入表格內容。如果我執行insert..exec,則會拋出無法執行嵌套insert..exec的錯誤。所以,我想在這裏使用OPENROWSET – Sher