近日處理要檢查在兩個主機的PDM與ERP系統其製程代號名稱是否不一致。之前在不同主機間互相連接資料庫查詢這樣用
SELECT MW001 AS M001, MW002 AS M002 FROM OPENROWSET(‘SQLOLEDB’, ‘(SQL Server的實例名稱)’ ; ‘(使用者)’; ‘(密碼)’,[Leader].[dbo].CMSMW)
但老是覺得冗長麻煩。於是改用 ‘連結伺服器’ 的方法。
1.建立連結的伺服器
…
…
2. 執行查詢,OK
SELECT MB001, MB002, MB003, MB004 [AAA].[Leader].[dbo].[INVMB] WHERE MB001
or
SELECT MB001, MB002, MB003, MB004 FROM AAA.Leader.dbo.INVMB WHERE MB001 LIKE 'R110%'
…
…
3. 但是執行以下時出錯了!
原因是DABA_PDM_P4與Leader資料庫定序不一樣
…
…
4. 解法:將使用遠端定序改成False
…
…
5. 執行OK! 找出一筆差異的資料
/* 本例在ERP資料庫 join PDM資料庫
PDM_P5為連結的PDM伺服器(主機)
*/
WITH MW AS
(
SELECT MW001 AS M001, MW002 AS M002 FROM CMSMW -- ERP製程代號資料表
)
SELECT pnoproc_no AS PDM_製程代號, pnoproc_name AS PDM_製程名稱, M001 AS GP_製程代號, M002 AS GP_製程名稱
FROM MW JOIN [PDM_P5].[DABA_PDM].[dbo].[GP_PnoProc] -- PDM製程代號資料表
ON pnoproc_no = M001
WHERE pnoproc_name <> M002
Tagged: SQL
發表留言