OLE DB Provider for DB2
隨著 Microsoft Host Integration Server 散發的 Microsoft OLE DB Provider for DB2,可讓 SQL Server 分散式查詢來查詢 DB2 資料庫內的資料。
[!附註]
如需有關如何安裝及設定 OLE DB 提供者的資訊,請參閱提供者所含的文件。
若要建立連結伺服器來存取 DB2 資料庫
將 Host Integration Server Client 軟體安裝在執行 SQL Server 執行個體的電腦上,然後選取安裝 OLE DB Provider for DB2 的選項。
決定 OLE DB Provider for DB2 在存取要查詢的 DB2 資料來源時所需的連接字串。決定連接字串的最佳方式,是使用 Host Integration Server 的 New OLE DB Data Source 應用程式來建立「資料連結」檔。如需詳細資訊,請參閱 Microsoft Host Integration Server 文件。
執行 sp_addlinkedserver 來建立連結伺服器,並將 DB2OLEDB 指定為 provider_name、將包含要存取之資料的 DB2 目錄名稱指定為 catalog,以及將步驟 2 的連接字串指定為 provider_string。
下列範例顯示如何使用 sp_addlinkedserver,來建立可存取 DB2 資料庫的連結伺服器定義:
EXEC sp_addlinkedserver @server = 'DB2SRV', @srvproduct = 'Microsoft OLE DB Provider for DB2', @catalog = 'SEATTLE', @provider = 'DB2OLEDB', @provstr = 'NetLib=SNA;NetAddr=;NetPort=;RemoteLU=SEATTLE;LocalLU=LOCAL; ModeName=QPCSUPP;InitCat=SEATTLE; Default Schema=WNW3XX;PkgCol=WNW3XX;TPName=;Commit=YES; IsoLvl=NC;AccMode=;CCSID=37;PCCodePage=1252;BinAsChar=NO; Data Source=Seattle_WNW3XX'
執行 sp_addlinkedsrvlogin 來建立 SQL Server 登入和 DB2 登入的登入對應。
下列範例會將 SQL Server 登入 SQLJoe 對應到 DB2 登入 DB2Joe:
EXEC sp_addlinkedsrvlogin 'DB2SRV', false, 'SQLJoe', 'DB2Joe', 'x894jd03?'
[!附註]
密碼會以未經加密的方式傳輸。在儲存於磁碟的資料來源定義和指令碼中、備份中和記錄檔中,可能看得見密碼。請勿在這種連接中使用管理員密碼。如需您環境的特定安全性指引,請洽詢網路管理員。
完成先前的步驟之後,您可以使用連結伺服器名稱 DB2SRV 做為四部分名稱中的伺服器名稱,並做為 OPENQUERY 函數內的 linked_server。例如:
SELECT *
FROM DB2SRV.SEATTLE.WNW3XX.DEPARTMENT
或
SELECT *
FROM OPENQUERY(DB2SRV, 'SELECT * FROM SEATTLE.WNW3XX.EMP_ACT')
當針對 DB2 資料來源的分散式查詢涉及到 NULL 的比較時,請使用 ISNULL 或 IS NOT NULL 來代替比較運算子 (例如等於 (=)、大於 (>) 或小於 (<))。此外,即使資料表的特定資料行可以為 NULL 或已經有預設值,INSERT 陳述式還是應該將值提供給資料表內的所有資料行。