如何通過 ODBC 連接到作為連結伺服器的數據庫?
(所有對這類事情的搜尋都告訴我連結伺服器通過 ODBC 連接到原始數據庫的位置,但我通過 ODBC 連接到中間伺服器。)
我有一個要連接到 Oracle 數據庫的 Python 腳本。在兩者之間,我有一個執行 Server 2003 和 SQLServer 2008 的伺服器。我在這個中間伺服器上創建了一個連結數據庫,它成功連接到 Oracle 伺服器。(使用 Management Studio 我可以成功地在遠端 Oracle 伺服器上執行查詢。)
當我設置執行 Python 腳本的機器時(可能是另一台 Server 2003,但我也會在 XP 和 Win7 機器上執行它),我嘗試為中間伺服器創建一個 OBDC 數據源。當伺服器上的數據庫列表出現時,它不會列對外連結接伺服器數據庫,只列出該中間伺服器上的普通數據庫。
是否可以讓 ODBC 查看連結伺服器數據庫?如果是這樣,怎麼做?
您創建了一個連結伺服器,而不是連結數據庫,因此沒有可供選擇的數據庫列表。您需要使用“四部分名稱”或使用 OPENQUERY() 函式。
四部分名稱描述另一台伺服器上的對象。通常由四部分組成的名稱看起來像“servername.databasename.schemaname.tablename”,但對於 Oracle,您顯然需要省略數據庫名稱。使用四部分名稱的 Oracle 查詢可能如下所示:
SELECT name FROM OracleSvr..joe.titles WHERE id = 101
其中“OracleSvr”是連結伺服器的名稱。
或者,這裡是一個使用 OPENQUERY 的語句範例。它應該做同樣的事情,有些人發現這種風格更容易閱讀。
SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
OPENQUERY 記錄在這裡。
無論您選擇哪種查詢方式,您都可以通過 Python 程序連接到 SQL Server,然後執行查詢。
您可以通過 ODBC 執行此操作,在設置連接時不需要指定數據庫名稱,您可以在查詢時執行,如上所述。