原本跨資料庫查詢要使用下列語法達成
select * from opendatasource('SQLOLEDB','Data Source=XX;User ID=sa;Password=')...
但為了簡化與安全性,總不能每支程式呼叫時都寫入帳號密碼,
所以這時候可以選擇用linked server來達成簡化。
作法:開啟SQL2005=>伺服器物件=>連結的伺服器=>左鍵新增連結的伺服器=>輸入你要連結的SQL Server,
詳細做法我就不贅述了,基本上就是按照wizard。
成功後,就可以用底下的語法直接查詢:
select * from 資料庫主機.資料庫.TableName
但是過程中遇到兩點問題,花了我點時間,跟大家分享:
1.上述的作法,只能在資料庫的本機開啟SQL管理工具,如果你是在別台主機,透過SQL管理工具管理遠端SQL,是無法使用Linked Server的,都會報錯,所以這點請一定要注意,不然只能用SQL指令新增了(sp_addlinkedserver)。
2.我使用的是x64的SQL2005資料庫去linkserver 32Bit的SQL2000資料庫,操作時會發生錯誤,後來找到原因,要執行一隻instcat.sql來升級SQL2000的預存程序,不然就會發生Linked Server可以連上,但是卻無法查詢的問題。
指令:osql -E -S <LinkedServerName> -i <Location>\instcat.sql
其中 LinkedServerName要輸入"要被連的SQL主機"
備註:第一條請注意,否則寫同樣的語句,也無法執行,例如我們需要將10.62.33.34上數據庫A轉移到10.36.246.219上對於的數據庫B
【1】先在10.62.33.34建立Linked Server10.36.246.219
【2】在數據庫A下新建Newquery
【3】再執行語句即可:select * from  [10.36.246.219,3000].[Ame_FSC_SEBGCelERP].dbo.中心單頭檔