SQL筆記:跨資料庫查詢、新增修改刪除與關聯式查詢

這篇文章不是教你在程式碼中切換資料庫的連線字串,來達成跨資料庫的查詢。也不是教你設定MSDTC(Microsoft Distributed Transaction Coordinator)來完成跨越資料庫的資料交易,而是在一般常規狀況下,如何在單一資料庫連線的狀態下,進行CRUD甚至是資料檢視表的關聯建立(主要資料庫主機A的資料表,關聯JOIN到次要資料庫的資料表)。

有很多人直覺認為要辦到跨資料庫的資料表JOIN是需要設定MSDTC的,但事實上不用喔!

使用MS SQL的「連結伺服器」功能來達成跨越資料庫的CRUD

Step 1. 打開SSMS連接到主要工作的資料庫,並來到「伺服器物件」>「連接的伺服器」處,點選右鍵選擇「新增連結的伺服器」。

Step 2. 假定我們要連接到的目標伺服器也是MS SQL,那就在「一般」的頁籤中選擇:

連接的伺服器:SQLTEST(命名一個你要稱呼對方資料庫伺服器的名稱)
提供者:SQL Server Native Client 10.0(端看你自己當下伺服器的版本而定)
產品名稱:SQLNCLI
資料來源:目標資料庫伺服器的IP。

Step 3. 接著切換到「安全性頁籤」,點選「使用此安全性內容設定」並進行下列設定:

遠端登入:目標資料庫伺服器的連線帳號
指定密碼:目標資料庫伺服器的連線密碼。

Step 4. 按下確定後若一切都沒問題,「伺服器物件」下面就會出現就會出現一個叫做SQLTEST的伺服器物件了,接著我們就可以用來進行各種CRUD的操作,甚至可以建立檢視表與本機資料庫的資料表進行關聯式查詢喔。(前提是你的帳號有足夠的權限)

目標資料表的語法

[伺服器物件名稱].[資料桶名稱].[dbo].[資料表名稱]

經過一番設定後,你就可以快快樂樂的在原本的資料庫環境裡面,查詢或操控另外一台伺服器的資料表嘍。

備註

這種愉快地連線設定體驗只限於Microsoft SQL Server之間,如果是使用Linked Server能力連線到異質資料庫(例如MySQL),那你會遇到很多問題,甚至連SQL指令碼的能力都被受限了。

MicrosoftSQLServer SQL CrossDatabase DbLink LinkedServer Select Insert Update Delete Join LeftJoin