Sql-Server
SQLCMD 連接到連結伺服器
我在
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 執行查詢。