SQL Server2005 Synonym的使用

1.Synonym的概念 

   Synonym(同义词)是SQL Server 2005的新特性。可以简单的理解Synonym为其他對象的别名。

 

語法

 

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >

 

< object > :: =

 

{

 

    [ server_name.[ database_name ] . [ schema_name_2 ].| database_name . [ schema_name_2 ].| schema_name_2. ] object_name

 

}

 

在建立同義字時,基底物件不需要存在。在執行階段,SQL Server 會檢查基底物件是否存在。

 

各參數涵義如下:

 

schema_name_1 :指定建立同義字的結構描述。如果未指定 schema,SQL Server 2005 會使用目前使用者的預設結構描述。

 

synonym_name :這是新同義字的名稱。

 

server_name :這是基底物件所在的伺服器名稱。

 

database_name :這是基底物件所在的資料庫名稱。如果未指定 database_name,就會使用目前資料庫的名稱。

 

schema_name_2 :這是基底物件的結構描述名稱。如果未指定 schema_name,就會使用目前使用者的預設結構描述。

 

object_name :這是同義字參考的基底物件名稱。 

 

注:

 

若要使用给定架构创建同义词,用户必须满足以下条件:

 

(1)拥有此架构或具有 ALTER SCHEMA 权限以

 

(2)具有 CREATE SYNONYM 权限。

 

(3)是 db_owner 的成员。

 

(4)是 db_ddladmin 固定数据库角色的成员

 

可以为下列对象类型创建同义词:

程序集 (CLR) 存储过程; 程序集 (CLR) 表值函数

程序集 (CLR) 标量函数; 程序集聚合 (CLR) 聚合函数

复制筛选过程; 扩展存储过程

SQL 标量函数;SQL 表值函数SQL 内联表值函数;

SQL 存储过程视图; 表(用户定义)

2.Synonym的实际应用

 

在你的程序发布的时候,你突然发现你需要更改某个表名,或字段名。而你的程序已经不可能修改。这时,怎么办呢?那就创建Synonym吧。当然,在sql2000时代,你可以使用view来做这个事情,或sprocs或udf等。但Synonym有其它所不能的功能,那就是跨数据库,跨服务器。

 

----------------------------------------------------------------------------

 

--Synonym在同一服务器上的不同数据库 

 

use db_study

 

go

 

if object_id('MyCustomers')is not null drop synonym MyCustomers

 

go

 

--為表建立別名

 

Create Synonym MyCustomers For Northwind.dbo.Customers

 

--查詢

 

go

 

select * from mycustomers

 

--切換數據庫

 

use Northwind

 

go

 

--建立函數

 

if object_id('synonym_UF')is not null drop function synonym_UF

 

go

 

create function synonym_UF()

 

returns table

 

as

 

 return(select * from Customers)

 

go

 

----為函數建立別名

 

use db_study

 

go

 

if object_id('synonym_uf')is not null drop synonym synonym_uf

 

go

 

create synonym synonym_uf for Northwind.dbo.synonym_UF

 

go

 

--調用函數

 

select * from synonym_uf()

 

--建立存儲過程

 

if object_id('synonym_PRO')is not null drop proc synonym_PRO

 

go

 

create proc synonym_PRO

 

as

 

 select * from Customers

 

go

 

----為存儲建立別名

 

use db_study

 

go

 

if object_id('synonym_PRO')is not null drop synonym synonym_PRO

 

go

 

create synonym synonym_PRO for Northwind.dbo.synonym_PRO

 

go

 

--執行存儲過程

 

exec synonym_PRO

 

--同樣支持動態

 

if object_id('MyCustomers')is not null drop synonym MyCustomers

 

go

 

--為表建立別名

 

exec('Create Synonym MyCustomers For Northwind.dbo.Customers')

 

--查詢

 

go

 

select * from mycustomers

 

----------------------------------------------------------------------------

 

---Synonym在不同服务器上的不同数据库

 

--先建立鏈結服務器

 

--创建链接服务器

 

exec sp_dropserver  'ITSV', 'droplogins' 

 

exec sp_addlinkedserver   'ITSV', ' ', 'SQLOLEDB', '192.168.12.***/wip' 

 

exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, 'sa', 'sun*****%'

 

go

 

Create Synonym MyCustomers For ITSV.Northiwind.dbo.Customers

 

go

 

Select * from MyCustomers

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wufeng4552/archive/2009/10/30/4747201.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值