Sql-Server

在多個鍵上加入 OPENQUERY 中的 SQL Server 表

  • September 19, 2018

我需要在多個鍵上將 Oracle 連結伺服器表(10 億行)與 SQL Server 表(100 行)連接起來:

SELECT * FROM OPENQUERY(EDW, 'SELECT * FROM ORACLE_TABLE') A
INNER JOIN SQL_TABLE B
ON A.KEY1 = B.KEY1 AND A.KEY2 = B.KEY2
INNER JOIN SQL_TABLE C
ON A.KEY3 = C.KEY1 AND A.KEY4 = C.KEY2;

但是 ORACLE_TABLE 非常龐大,並且這個查詢需要太多時間來執行。有沒有辦法將 SQL_TABLE 傳遞給 OPENQUERY 並在 Oracle 伺服器上進行連接?

好吧,那就反過來想。類似於一般大綱:

  1. 創建從 Oracle 到 SQL Server 和 SQL Server 到 Oracle 的連結伺服器。
  2. 從 Oracle 中選擇 100 行 SQL Server 數據並儲存在 Oracle 的臨時表中。
  3. 在 Oracle 中執行查詢以通過臨時表中的 100 個 SQL Server 行來連接/過濾/不管 10 億個 Oracle 行,以創建結果集。
  4. 使用 SQL Server 中的 OPENQUERY 將結果返回給 SQL Server。
INSERT INTO SqlServerTable 
  SELECT * FROM OPENQUERY (LinkedServerName, 'query text');

我可能錯過了一些步驟,但這種基本方法是將少量 SQL Server 數據移至 Oracle,執行查詢,然後將結果讀回 SQL Server。

編輯:在https://stackoverflow.com/questions/29200147/how-do-i-convert-an-oracle-timestamp-data-type-to-sql-server-datetime2-data-type Jon of All Trades展示瞭如何他將 Oracle 轉換timestamp為 SQL Server datetime2

(但是,我沒有要測試的 Oracle 伺服器。)

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