Sql-Server

SQLCMD 連接到連結伺服器

  • March 20, 2018

我在sqlcmd連接到連結伺服器時遇到以下登錄錯誤:

SQLCMD -E -dlinkedserver -ig:\temp\script.sql -o g:\temp\test.txt

我的連結伺服器是一個預言機,通過連結伺服器的應用程序帳戶連接。

上面的程式碼有什麼問題嗎,它試圖登錄到連結伺服器,執行腳本,然後登錄到文件。

如果要使用 SQL Server 實例中定義的連結伺服器,則需要連接到託管連結伺服器的 SQL Server 實例,並確保您的命令使用 4 部分命名引用連結伺服器對象。該SQLCMD程序不知道連結伺服器是什麼,因此無法直接連接到連結伺服器。

假設您的連結伺服器已命名MyLinkedServer,那麼您的 .sql 文件應如下所示:

INSERT SQLServerDatabase.dbo.TableName(columns) -- SQL Server table
 SELECT columns FROM MyLinkedServer..[Schema].[TableName]; -- Oracle table

或者:

INSERT SQLServerDatabase.dbo.TableName(columns) -- SQL Server table
 SELECT columns FROM OPENQUERY
 (
   MyLinkedServer, 
   N'SELECT columns FROM [Schema].[TableName]' -- Oracle table
 );

而且您SQLCMD根本不會說有關連結伺服器名稱的任何內容,因為它從腳本內部獲取有關連結伺服器的資訊:

SQLCMD -E -S Server\Instance -i g:\...\file.sql -o g:\...\log.txt

當然,如果您不需要依賴 (a)SQLCMD或 (b) SQL Server 實例中定義的連結伺服器,還有其他方法可以對 Oracle 執行查詢。

引用自:https://dba.stackexchange.com/questions/201804