SQL Server 2005中synonyms的正確用法
以下的文章主要是對(duì)SQL Server 2005數(shù)據(jù)庫(kù)中synonyms的具體使用以及對(duì)其在實(shí)際應(yīng)用中的優(yōu)點(diǎn)與缺點(diǎn)的介紹,在世紀(jì)工作中我所面臨的問(wèn)題是,在product數(shù)據(jù)庫(kù)中把創(chuàng)建的表進(jìn)行歸檔,因?yàn)殡S著數(shù)據(jù)庫(kù)的增長(zhǎng),現(xiàn)在需要把它們移走。
同時(shí),這些歸檔的表被幾項(xiàng)工作使用,而且它還在應(yīng)用程序的代碼中被調(diào)用。這樣移動(dòng)它們就是一個(gè)非常復(fù)雜
在我的新工作中,我面臨著一個(gè)問(wèn)題,在product數(shù)據(jù)庫(kù)中把創(chuàng)建的表進(jìn)行歸檔,因?yàn)殡S著數(shù)據(jù)庫(kù)的增長(zhǎng),現(xiàn)在需要把它們移走。同時(shí),這些歸檔的表被幾項(xiàng)工作使用,而且它還在應(yīng)用程序的代碼中被調(diào)用。這樣移動(dòng)它們就是一個(gè)非常復(fù)雜的過(guò)程。我希望能找到一種方法,盡可能減輕開(kāi)發(fā)人員必須得完成的工作量,因?yàn)樗麄兊臅r(shí)間非常有限。請(qǐng)問(wèn)在有限時(shí)間內(nèi)按要求把表進(jìn)行歸檔的***方法?
專家解答
在SQL Server 2005中有一個(gè)特性,能解決這一問(wèn)題,并且能提供進(jìn)一步地優(yōu)化和工具設(shè)備, 這個(gè)特征就是SQL Server 2005中的同義詞(SYNONYMs)。同義詞(SYNONYM)是SQL Server 2005中新特性。它是一種在已有的或潛在的新對(duì)象中給予的別名。它只是一個(gè)指針或者參數(shù),所以它不被當(dāng)作是一個(gè)對(duì)象。
為了創(chuàng)造一個(gè)同義詞(SYNONYM),您需要有創(chuàng)造同義詞(SYNONYM)的權(quán)限。 如果您是系統(tǒng)管理員或db_owner,那么您將擁有這些權(quán)限并且可以授予這個(gè)權(quán)限給其他用戶。此外,如果你需要?jiǎng)?chuàng)建一個(gè)跨越數(shù)據(jù)庫(kù)的同義詞,那么需要另一數(shù)據(jù)庫(kù)的權(quán)限。
下面是一個(gè)例子,用來(lái)在一個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建同義詞(SYNONYM),而在數(shù)據(jù)庫(kù)中引用另一個(gè)對(duì)象:
- USE AdventureWorks
- GO
- CREATE SYNONYM MySyn FOR Production.Location
- GO
要檢查這些工作,您可以在SYNONYM的使用過(guò)程中使用下面的查詢語(yǔ)句:
- SELECT * From MySyn
下面這又是一個(gè)的例子,它是在一個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建同義詞(SYNONYM),而在另外一個(gè)數(shù)據(jù)庫(kù)中引用這個(gè)對(duì)象:
- USE master
- GO
- CREATE SYNONYM dbo.MySyn FOR AdventureWorks.Production.Location
- GO
為了獲得同義詞(SYNONYMs)中所有變化的數(shù)據(jù),可以使用下面的命令:
- SELECT * FROM sysobjects
- WHERE xtype = 'SN'
- ORDER BY NAME
刪除同義詞(SYNONYM)可以使用下面的命令:
- USE AdventureWorks;
- GO
- DROP SYNONYM MySyn
- GO
同義詞(SYNONYM)非常有用,SQL Server 2005中使用synonyms的優(yōu)缺點(diǎn)可以創(chuàng)造以下這些:
表
視圖
匯編的存儲(chǔ)過(guò)程,表值函數(shù),族聚
SQL標(biāo)量函數(shù)
SQL存儲(chǔ)過(guò)程
SQL表值函數(shù)
內(nèi)嵌的SQL表值函數(shù)
本地和全局的臨時(shí)表
復(fù)制篩選過(guò)程
擴(kuò)展存儲(chǔ)過(guò)程
SQL Server 2005中使用synonyms的優(yōu)點(diǎn)
同義詞(SYNONYM)提供一個(gè)抽象層以上引用的對(duì)象
允許更改復(fù)雜(多部分)和冗長(zhǎng)的名稱,用一個(gè)簡(jiǎn)化的別名作為在同一臺(tái)服務(wù)器上的寄存對(duì)象。
能靈活改變對(duì)象的位置而無(wú)需變動(dòng)現(xiàn)有的程序代碼。
在同一個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建SYNONYMs,來(lái)為老的應(yīng)用程序提供向后兼容性,以避免刪除或重命名對(duì)象。
如果你給了前端查詢工具(例如電子數(shù)據(jù)表和Access鏈接表)到這些數(shù)據(jù)表的直接鏈接,那么SYNONYMs是很有用的。
SQL Server 2005中使用synonyms的缺點(diǎn)
同義詞(SYNONYMs)綁定到引用的對(duì)象是非常松散的。因此,您在刪除被引用的任何其他數(shù)據(jù)庫(kù)對(duì)象的同義詞的時(shí)候,沒(méi)有得到任何的提示或者警告。
同義詞是不允許鏈接的。這就說(shuō)明你不能在一個(gè)同義詞中創(chuàng)建另一個(gè)同義詞。
會(huì)消耗更多的對(duì)象名稱,就像如果同義詞存在了,就不能再創(chuàng)建一個(gè)與同義詞名稱一樣的表。
同義詞創(chuàng)建了對(duì)象后,在運(yùn)行的時(shí)候就開(kāi)始被檢查,它并不是檢查創(chuàng)建的時(shí)間,也就是說(shuō)如果您作出任何相關(guān)的錯(cuò)誤,例如拼寫錯(cuò)誤,同義詞就會(huì)被創(chuàng)建,當(dāng)你訪問(wèn)這個(gè)對(duì)象時(shí)你就會(huì)得到一個(gè)錯(cuò)誤信息。
同義詞不能引用在一個(gè)DDL聲明中。
總結(jié)
你可以在現(xiàn)有的數(shù)據(jù)庫(kù)或其它數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)同義詞做為參考對(duì)象。在同義詞使用的時(shí)候,定義一個(gè)簡(jiǎn)單的別名也許是***的選擇,這樣就不需要通過(guò)大量的移動(dòng)或者重命名對(duì)象做重復(fù)工作。
【編輯推薦】
- SQL Server 數(shù)據(jù)導(dǎo)入的實(shí)際行為規(guī)范描述
- SQL Server 2000的安全策略的正確打造
- MS SQL Server數(shù)據(jù)庫(kù)快速獲得表的記錄總數(shù)步驟
- SQL Server DateTime數(shù)據(jù)類型的另類解讀
- SQL Server identity列,美中不足之處