| 導購 | 订阅 | 在线投稿
分享
 
 
 

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

來源:互聯網  2008-06-01 03:14:54  評論

數據庫中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 daval\sql2005,Null

Exec sp_dropserver daval\sql2005

EXEC sp_addlinkedserver

@server='daval\sql2005',--被訪問的服務器別名

@srvproduct='',

@provider='SQLOLEDB',

@datasrc='D12' --要訪問的服務器

EXEC sp_addlinkedsrvlogin

'daval\sql2005', --被訪問的服務器別名

'false',

NULL,

'sa', --賬號

'123456' --密碼

Select * from MyCustomers

數據庫中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 daval\sql2005,Null Exec sp_dropserver daval\sql2005 EXEC sp_addlinkedserver @server='daval\sql2005',--被訪問的服務器別名 @srvproduct='', @provider='SQLOLEDB', @datasrc='D12' --要訪問的服務器 EXEC sp_addlinkedsrvlogin 'daval\sql2005', --被訪問的服務器別名 'false', NULL, 'sa', --賬號 '123456' --密碼 Select * from MyCustomers
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有