SQLServer中同義詞Synonym的用法

2022-05-01 11:12:10 字數 1206 閱讀 3071

以前一直認為sqlserver中的同義詞(synonym)沒有什麼用處,所以也一直沒有去查它的語法格式。今天碰到乙個問題,用synonym來解決再好不過了。問題是這樣子的,我的系統中用到了多個資料庫,然後因為各個資料庫中的某些資料需要同步,所以我就在其中的某個資料庫中的表中新增觸發器,來同步更新其它資料庫中的資料。舉例如下:

有兩個資料庫a和b,分別有表a1與b1,然後我在表a1建立了觸發器來更新表b1中的資料,觸發器大概如下:

create trigger tu_a1 after update

as……

update t2 set t2.欄位=t1.欄位

from inserted t1,b..b1 t2 where t1.欄位=t2.欄位

反正就是,我在a1的觸發器中用到了b..這種方式來引用資料庫b中的物件。

然後問題就來了,今天老闆說在同一臺伺服器上要同時安裝多個系統。那麼就需要把資料庫a和資料庫b複製多份,當然複製出來的資料庫名字就不能叫a和b了,可能叫a1與b1。那麼a1中的觸發器就不能更新b1中的資料了,因為a1中的觸發器是使用b..這種方式來引用的。這種情況下,必須將全部的b..全部換成b1..。這樣,如果這樣引用的地方多了,那就是一場災難了。

使用同義詞synonym就能很好的解決這個問題,首先大概說一下同義詞(synonym)的作用。

同義詞:就是定義乙個字串名稱,用來代替乙個有意義的引用物件。

在上例中,我可以用bb1這個字串來代代b..b1,那麼以後我要操作b..b1這錶,就可以直接操作bb1,與操作前者一樣的效果。那麼,在部署多套系統時,只需修改一下新資料庫中這個同義詞的引用就可以了,觸發器根本不需要修改。

下面是「建立,刪除,引用」同義詞的sql語句示例,注意,同義詞不提供修改的功能,所以一旦建立了,就只能刪除再重建,是不能夠修改的。

建立同義詞

create synonym bb1

from b..b1

使用同義詞

insert into bbl(……) values (……)

引用同義詞

select * from bbl

刪除同義詞

drop synonym bb1

查詢所有同義詞

select * from sys.synonyms

注意:只有sqlserver2005及以後的版本中才有synonym。ong>。

出處:

關於sqlserver同義詞

關於sqlserver同義詞,如果通過介面進行操作,如果要訪問的資料庫例項是在同一機器上,其中伺服器名稱填寫機器名稱,不要寫ip,不然執行的時候會提示 要執行sp addlinkedserver命令 估計原因是指定了ip,理解是跨機器的訪問,所以才出現這樣的提示。建議的做法是通過指令碼來建立同義詞,...

SQL SERVER 2005中同義詞例項

在sql server 2005中,終於出現了同義詞了,大大方便了使用。下面舉個小例子說明 同義詞是用來實現下列用途的資料庫物件 為本地或遠端伺服器上的另乙個資料庫物件 稱為 基物件 提供備選名稱。提供乙個提取層,該層防止客戶端應用程式的基物件的名稱或位置被更改。例如,名為 server1 的伺服器...

SQL SERVER 2005中同義詞例項

from 在sql server 2005中,終於出現了同義詞了,大大方便了使用。下面舉個小例子說明 同義詞是用來實現下列用途的資料庫物件 為本地或遠端伺服器上的另乙個資料庫物件 稱為 基物件 提供備選名稱。提供乙個提取層,該層防止客戶端應用程式的基物件的名稱或位置被更改。例如,名為 server1...