簡體   English   中英

使用鏈接服務器返回錯誤-“無法獲取OLE DB提供程序的架構行集”

[英]Using linked server returns error - “Cannot obtain the schema rowset for OLE DB provider”

如上一個問題所述,我試圖將ETL數據從一台sql服務器移動到另一台sql服務器- 將數據從一列復制到另一列 現在,當我嘗試執行查詢時出現錯誤。

查詢-

INSERT INTO [Target_server].[Target_DB1].[dbo].[Target_Table1](Target_Column1)
SELECT Source_Column222
FROM [Source_server].[Source_DB1].[dbo].[Source_Table1]
WHERE Source_Column1 = 'ID7162'

錯誤-

OLE DB provider "SQLNCLI" for linked server "MYLINKEDSERVER" returned message "Unspecified error".
OLE DB provider "SQLNCLI" for linked server "MYLINKEDSERVER" returned message "The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator.".
Msg 7311, Level 16, State 2, Line 1
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI" for linked server "MYLINKEDSERVER". The provider supports the interface, but returns a failure code when it is used.

如果您寫的簡單選擇不起作用,則問題出在鏈接服務器的安全配置和用戶在此處獲得的權限。

其中,執行查詢時,無需為源和目標這兩個部分都指定服務器名稱和數據庫名稱。 您只需要在目標服務器和目標數據庫上執行查詢。 在這種情況下,您的查詢而不是

INSERT INTO [Target_server].[Target_DB1].[dbo].[Target_Table1](Target_Column1)
SELECT Source_Column222
FROM [Source_server].[Source_DB1].[dbo].[Source_Table1]
WHERE Source_Column1 = 'ID7162'

將如下所示:

INSERT INTO [dbo].[Target_Table1](Target_Column1)
SELECT Source_Column222
FROM [Source_server].[Source_DB1].[dbo].[Source_Table1]
WHERE Source_Column1 = 'ID7162'

並且您需要在服務器[Target_server]和數據庫[Target_DB1]上打開連接。 另外,鏈接服務器的安全性需要對被檢查[Target_server]反對[Source_server]

如果您正在使用回送鏈接服務器(鏈接服務器引用同一服務器中的同一數據庫),則請參考以下鏈接:

與環回鏈接服務器進行事務處理-鎖定問題

如果不是這種情況,則是Microsoft提供的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM