SQL Server Synonym 使用
来源:互联网 发布:relief算法原理 编辑:程序博客网 时间:2024/05/19 19:41
http://blog.csdn.net/wufeng4552/article/details/4747201
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
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
0 0
- SQL Server Synonym 使用
- SQL Server2005 Synonym的使用
- SQL Server2005 Synonym的使用
- Sql server 创建同义词CREATE SYNONYM介绍
- SQL Server 2005 中感受Synonym | Leesoft.com.cn
- sql server create synonym 用同义词解决程序升级过程中架构名称改变的问题
- DBlink使用/同义词Synonym使用
- synonym
- Synonym
- oracle vs. SQL 同义词synonym 别名 alias
- SQL基础--> 序列(SEQUENCE)、同义词(SYNONYM)
- SQL基础--> 序列(SEQUENCE)、同义词(SYNONYM)
- 初试oracle中synonym的使用
- Oracle数据库之同义词(SYNONYM)使用
- Oracle数据库之同义词(SYNONYM)使用
- Oracle数据库之同义词(SYNONYM)使用
- SQL Server report server使用
- sql server 游标使用
- 总结swift语言常见的20个问题和回答
- 亚马逊Fire TV Stick电视棒让手机变身遥控器
- JavaWeb 服务启动时,在后台启动加载一个线程。
- 用swift开发仪表盘控件(一)
- 在ubuntu上搭建go编程环境(附带自动化部署脚本)
- SQL Server Synonym 使用
- Linux软件管理
- OSPF系列:distribute-list分发列表
- 判断字符串数组里面为空
- 递归实现链表逆序(不需三个临时指针变量)
- js中的json对象
- 黑马程序员_网络编程(2)
- Ford Fulkerson 算法
- Java(编程语言)--未完成