今天在嘗試設定 SQLEXPRESS 中的「連結的伺服器(Linked Server)」功能,不知道是 Management Studio 翻譯的不清楚還是怎樣,試了好多次才成功,以下是我設定「連結的伺服器」的心得。
先開啟 Microsoft SQL Server Management Studio 工具,找到「伺服器物件」下的「連結的伺服器」,按滑鼠右鍵選「新增連結的伺服器(N)...」選項。
然後這頁就是重點了,讓我試了好幾次才成功的,即便我按了 F1 看線上說明我還是看不懂應該怎麼輸入。
底下是各欄位的說明,部分是從 SQL Server 2005 線上叢書摘錄下來的,並另外加上我個人的說明:
- 連結的伺服器
- 提供用來參考此連結之伺服器的名稱。
- 為此「連結的伺服器」設定一個名稱,未來可以在 T-SQL 的時候使用。
- SQL Server
- 將連結的伺服器識別為 Microsoft SQL Server 的執行個體。如果您使用這個定義 SQL Server 連結之伺服器的方法,[連結的伺服器] 中所指定的名稱就必須是伺服器的網路名稱。另外,從伺服器擷取的任何資料表,都會是來自已連結伺服器上之登入所定義的預設資料庫。
- 其他資料來源
- 指定 SQL Server 以外的 OLE DB 伺服器。按一下這個選項會啟動在它下面的選項。
- 提供者
- 從清單方塊中選取 OLE DB 資料來源。在登錄中,OLE DB 提供者是使用給定的 PROGID 註冊。
- 如果你要連結到 SQL 2000 的資料庫,可以選擇 Microsoft OLE DB Provider for SQL Server 或是 SQL Native Client
- 產品名稱
- 輸入 OLE DB 資料來源的產品名稱,以加入成為連結的伺服器。
- 隨便輸入一個名字都可以,這是用來辨識來源的資料庫是用何種產品用的,類似註解欄位。
- 資料來源
- 依 OLE DB 提供者所解譯的,輸入資料來源的名稱。
- 這裡可以輸入遠端的 IP 位址(TCP/IP),或輸入具名連線位址(Named Pipe),或輸入檔案的完整路徑(Excel or Access file)。
- 提供者字串
- 輸入對應至資料來源之 OLE DB 提供者的唯一程式設計識別碼 (PROGID)。
- 這就是我看不懂的地方了,其實這裡就是輸入完整的連線字串(Connection String)啦!!
- 位置
- 依 OLE DB 提供者的解譯,輸入資料庫的位置。
- 這我也看不懂,應該是依據不同的 OLE DB 會有不同的用途吧,等以後有用到時在去查及可。
- 目錄
- 輸入連接到 OLE DB 提供者時,要使用的目錄名稱。
- 這裡可以選擇性的輸入「資料庫名稱」,也可以不用輸入,如果你是要連結到 SQL Server,設定這個欄位好像也沒什麼用。
接下來,還要輸入「安全性」頁籤中的登入資訊,比較簡單的作法就是直接設定「使用此安全性內容建立(M):」的「遠端登入」(帳號) 以及「指定密碼」即可。
之後按下「確定」鍵,如果沒出現錯誤訊息,那就是成功啦。
不過我也發現,當你是使用 SQLEXPRESS 的時候,新增完「連結的伺服器」後,幾乎就沒什麼功能了,無法查看遠端的連結伺服器有什麼資料庫,也無法在新增完「連結的伺服器」後測試連接是否成功。但若你用的是 SQL Server 2005 且更新到 Service Pack 2 的話,您就可以透過 GUI 介面測試是否能連接到連結伺服器。你可以在 [物件總管] 中,以滑鼠右鍵按一下連結伺服器,然後按一下 [測試連接]。
若連接成功,會得到以下畫面:
如果連接失敗也會得到錯誤訊息,不過回應的訊息也可能是由遠端伺服器傳過來的,所以訊息描述的清楚與否取決於遠端回傳的資料說明詳細與否。
那如果要下 T-SQL 查詢連結的伺服器中資料庫的資料,就可以用以下語法直接查詢:
-- TEST 代表「連結的伺服器」
-- Northwind 代表「連結的伺服器中的資料庫名稱」
-- dbo 代表「連結的伺服器中的資料庫的結構描述」
-- Categories 代表「連結的伺服器中的資料庫中的表格名稱」
select * from TEST.Northwind.dbo.Categories
如果你要連接到不同類型的資料庫或檔案,可以參考以下連結:
其他相關連結