新聞中心
1, 什么是Synonym

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),尼勒克企業(yè)網(wǎng)站建設(shè),尼勒克品牌網(wǎng)站建設(shè),網(wǎng)站定制,尼勒克網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,尼勒克網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Synonym(同義詞)是Sql 2005的新特性。推出已經(jīng)好幾年了。你可以簡(jiǎn)單的理解Synonym 為其他表的別名。我們使用Northwind數(shù)據(jù)庫(kù)為例。比如,看下面的例子
Synonym MyCustomers FOR Customers |
為Customers表創(chuàng)建一個(gè)Synonym,叫MyCustomers。 你可以把這個(gè)MyCustomers當(dāng)作一個(gè)普通的表,可以對(duì)它進(jìn)行查詢(xún),更新,刪除和插入。比如
查詢(xún): Select * from MyCustomers.
插入: Insert into MyCustomers (CustomersID, CompanyName) values ('Tom', 'MS')
所有的操作,和普通的表沒(méi)有區(qū)別。
2, Synonym的應(yīng)用
在你的程序發(fā)布的時(shí)候,你突然發(fā)現(xiàn)你需要更改某個(gè)表名,或字段名。而你的程序已經(jīng)不可能修改。這時(shí),怎么辦呢?那就創(chuàng)建Synonym吧。當(dāng)然,在sql2000時(shí)代,你可以使用view來(lái)做這個(gè)事情,或sprocs或udf等。但Synonym有其它所不能的功能,那就是跨數(shù)據(jù)庫(kù),跨服務(wù)器。
3,Synonym在同一服務(wù)器上的不同數(shù)據(jù)庫(kù)
對(duì)于同一服務(wù)器上的不同數(shù)據(jù)庫(kù),我們可以使用Synonym,將其他數(shù)據(jù)庫(kù)中的表或view或sprocs及udf在本數(shù)據(jù)庫(kù)中映射別名。這樣,就可以不用更改連接字符串,而在當(dāng)前對(duì)話數(shù)據(jù)庫(kù)的情況下,獲取其他數(shù)據(jù)庫(kù)的數(shù)據(jù),并對(duì)它進(jìn)行,查詢(xún),更新,刪除和插入工作。
先假設(shè)已經(jīng)存在Northwind數(shù)據(jù)庫(kù),然后,再建一個(gè)數(shù)據(jù)庫(kù)。我們?cè)谛碌臄?shù)據(jù)庫(kù)上,創(chuàng)建Customer表的Synonym.
[[2352]]Create Synonym MyCustomers For Northiwind.dbo.Customers |
需要注意的是,后面需要寫(xiě)清那個(gè)數(shù)據(jù)庫(kù),那個(gè)表,中間dbo為表的owner.然后,運(yùn)行 Insert into MyCustomers (CustomersID, CompanyName) values ('Tom', 'MS')和Select * from MyCustomers. 看看是不是真的像普通表那樣。
4, Synonym在不同服務(wù)器上的不同數(shù)據(jù)庫(kù)
假設(shè),我們有一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器叫SqlTest。上面有個(gè)數(shù)據(jù)庫(kù)叫Northwind。我們本地還有一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器。叫LocalTest. 其上面有一數(shù)據(jù)庫(kù)叫Northwind或其他什么的。突然有一天,為了使本地的數(shù)據(jù)庫(kù)跑的更快,本地的老數(shù)據(jù)被移到SqlTest上去了,本地只保存最近更新的。那老數(shù)據(jù)總還是要用的,怎么樣實(shí)現(xiàn)不同服務(wù)器之間的數(shù)據(jù)操作呢?那就用Synonym吧。如下
Create Synonym MyCustomers For SqlTest.Northiwind.dbo.Customers |
在上一個(gè)例子的基礎(chǔ)上,加了個(gè)機(jī)器名字而已。就這么簡(jiǎn)單?不是吧?那臺(tái)服務(wù)器還不一定知道用戶(hù)名和密碼呢。恩,是的,還要在本地服務(wù)器上,注冊(cè)下遠(yuǎn)程的服務(wù)器。使用sp_addlinkedserver,次存儲(chǔ)過(guò)程定義如下:
|
可以運(yùn)行下面的腳本,將SqlTest注冊(cè)到本地
EXEC sp_addlinkedserver |
這樣,就可以把遠(yuǎn)程數(shù)據(jù)庫(kù)當(dāng)成本地的來(lái)使用。
5,Synonym的其他功能和用UI創(chuàng)建Synonym
Synonym不光可以對(duì)表創(chuàng)建,也可以為view,sprocs,以及udf創(chuàng)建相應(yīng)的Synonym. 如圖:
Sql2005的Server Managerment Studio有這么一項(xiàng),選擇后,會(huì)出現(xiàn)下面畫(huà)面。添入名稱(chēng)等,選擇object的類(lèi)型,你就可以選為View,Table, Sprocs和udf創(chuàng)建Synonym了。
6, openquery
相對(duì)于Synonym,OpenQuery相對(duì)來(lái)說(shuō),功能就弱了點(diǎn)。其只是在調(diào)用其它數(shù)據(jù)庫(kù)上的sprocs.比如
select * from openquery([SqlTest], 'exec northwind.dbo. [Customers By City] @param1=N''London''')where CustomerID = 'AROUT' |
這就是在執(zhí)行SqlTest服務(wù)器上的,northwind數(shù)據(jù)庫(kù)下的,[Customers By City]的存儲(chǔ)過(guò)程。你可以在Linq To Sql進(jìn)階系列(五)Store Procedure篇 一文中,獲得該存儲(chǔ)過(guò)程。openquery其***個(gè)參數(shù)為數(shù)據(jù)服務(wù)器的名稱(chēng)。如果是異地的,也需要在本地注冊(cè)它,和Synonym相同。你也可以寫(xiě)本地的機(jī)器名,那就成了本地跨數(shù)據(jù)庫(kù)的操作了。在上面的這個(gè)例子中,其語(yǔ)句中有London,是傳入存儲(chǔ)過(guò)程的值。因?yàn)槠湟呀?jīng)被 ' 引過(guò),在openquery函數(shù)下,又要被 ' 引。所以,它兩頭加了兩個(gè) ''。 如果有疑問(wèn),請(qǐng)參閱SQL 語(yǔ)句中特殊字符的處理及預(yù)防sql 注射
7, Linq 對(duì)Synonym的支持
目前SqlMetal和OR designer無(wú)法對(duì)Synonym做映射。但是,用戶(hù)依然可以通過(guò)手工修改dbml 達(dá)到映射的目的。Synonym在Linq中的使用。和其他表等沒(méi)有任何差別。
結(jié)論:通過(guò)Synonym,我們可以實(shí)現(xiàn)不同數(shù)據(jù)庫(kù),以及不同服務(wù)器之間的數(shù)據(jù)分流。以達(dá)到平衡負(fù)載的目的,提高效率的目的。
網(wǎng)頁(yè)名稱(chēng):詳解在不同的SQLServer數(shù)據(jù)庫(kù)之間查詢(xún)數(shù)據(jù)
網(wǎng)頁(yè)地址:http://www.5511xx.com/article/ccccjsg.html
其他資訊
- DB2數(shù)據(jù)庫(kù)實(shí)現(xiàn)MD5加密技術(shù),安全可靠(db2數(shù)據(jù)庫(kù)md5加密)
- 國(guó)內(nèi)服務(wù)器和國(guó)外服務(wù)器的區(qū)別?(網(wǎng)站服務(wù)器在海外跟國(guó)內(nèi)區(qū)別)
- MySQL修改數(shù)據(jù)庫(kù):ALTERDATABASE用法簡(jiǎn)介
- 如何在數(shù)據(jù)庫(kù)中存儲(chǔ)圖片路徑(數(shù)據(jù)庫(kù)中圖片路徑)
- windows10修復(fù)引導(dǎo)uefi?(windows10修復(fù)引導(dǎo)命令)


咨詢(xún)
建站咨詢(xún)
