国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

由淺入深講解SQL Server 2005數據庫中Synonym的使用方法

瀏覽:82日期:2023-11-05 09:51:08
數據庫中Synonym的使用方法:

1.Synonym的概念

Synonym(同義詞)是SQL Server 2005的新特性。推出已經有幾年的時間了。我們可以簡單的理解Synonym為其他表的別名。本文中使用Northwind數據庫為示例:

Create Synonym MyCustomers FOR Customers

為Customers表創建一個Synonym,叫MyCustomers。 我們可以把這個MyCustomers當作一個普通的表,可以對它進行查詢,更新,刪除和插入。例如:

查詢: Select * from MyCustomers.

插入: Insert into MyCustomers (CustomersID, CompanyName) values ('Tom', 'MS')

所有的操作,和普通的表沒有區別。

2.Synonym的實際應用

在你的程序發布的時候,你突然發現你需要更改某個表名,或字段名。而你的程序已經不可能修改。這時,怎么辦呢?那就創建Synonym吧。當然,在sql2000時代,你可以使用view來做這個事情,或sprocs或udf等。但Synonym有其它所不能的功能,那就是跨數據庫,跨服務器。

3.Synonym在同一服務器上的不同數據庫

對于同一服務器上的不同數據庫,我們可以使用Synonym,將其他數據庫中的表或view或sprocs及udf在本數據庫中映射別名。這樣,就可以不用更改連接字符串,而在當前對話數據庫的情況下,獲取其他數據庫的數據,并對它進行,查詢,更新,刪除和插入工作。

先假設已經存在Northwind數據庫,然后,再建一個數據庫。我們在新的數據庫上,創建Customer表的Synonym.

Create Synonym MyCustomers For Northiwind.dbo.Customers

需要大家注意的是,后面需要寫清那個數據庫,那個表,中間dbo為表的owner.

然后,運行 Insert into MyCustomers (CustomersID, CompanyName) values ('Tom', 'MS')

和Select * from MyCustomers. 看看是不是真的像普通表那樣。

4.Synonym在不同服務器上的不同數據庫

假設一下,我們有一臺數據庫服務器叫SqlTest。上面有個數據庫叫Northwind。我們本地還有一臺數據庫服務器。叫LocalTest. 其上面有一數據庫叫Northwind或其他什么的。突然有一天,為了使本地的數據庫跑的更快,本地的老數據被移到SqlTest上去了,本地只保存最近更新的。那老數據總還是要用的,怎么樣實現不同服務器之間的數據操作呢?那就用Synonym吧。如下:

Create Synonym MyCustomers For SqlTest.Northiwind.dbo.Customers

你可能會發現,只是在上面這個例子的基礎上,加了個機器名字。就這么簡單?不是吧?那臺服務器還不一定知道用戶名和密碼呢。對,是的,還要在本地服務器上,注冊一下遠程的服務器。使用sp_addlinkedserver,此存儲過程定義如下所示:

Exec sp_droplinkedsrvlogin davalsql2005,NullExec sp_dropserver davalsql2005 EXEC sp_addlinkedserver@server='davalsql2005',--被訪問的服務器別名@srvproduct='',@provider='SQLOLEDB',@datasrc='D12' --要訪問的服務器EXEC sp_addlinkedsrvlogin 'davalsql2005', --被訪問的服務器別名'false', NULL, 'sa', --賬號'123456' --密碼Select * from MyCustomers

標簽: Sql Server 數據庫
主站蜘蛛池模板: 马公市| 扎兰屯市| 铜川市| 邯郸县| 达州市| 德格县| 博爱县| 南华县| 龙陵县| 莱州市| 米林县| 富锦市| 麻城市| 东方市| 那曲县| 鹤壁市| 民勤县| 宜宾市| 岳西县| 佛坪县| 济源市| 四子王旗| 综艺| 灵璧县| 阿巴嘎旗| 遂昌县| 衡阳县| 咸宁市| 阜康市| 黄陵县| 正镶白旗| 镇坪县| 大名县| 沂南县| 南阳市| 金川县| 北票市| 彰化市| 福海县| 蛟河市| 沙雅县|