2011-03-17 44 views
4

为什么要使用同义词,syNONYMS IN SQL的优点?同义词IN SQL的优点?

+0

可能重复[什么是SQL Server 2008中使用同义词?](http://stackoverflow.com/questions/1246006/what-is-the-use-of-synonym-in -sql-server-2008) – FistOfFury 2014-09-29 14:39:54

回答

6

它们只是数据库内对象的简写名称。例如,如果在名为ProductionControl.Inventory.Products的数据库中有名称空间的表,则可以创建名为Products的同义词。它们在控制对存储过程中其他数据库的命名访问时也很方便。如果您有SP引用其他数据库中的表,则创建同义词并使用它代替了同义词的目标发生更改时的更多控制。这在您具有引用开发数据库的SP的情况下非常有用,但在部署到生产时名称不同。所以你只需更新同义词就可以了。

+0

请不要成为这些傻瓜之一,他们只是调用第一个别名'a',下一个'b',下一个'c',然后再次重新开始子查询。它使它不可读。 – 2011-03-18 11:34:45

2

从MSDN Understanding Synonyms

同义词是一个数据库对象 有以下用途:

  • 提供了一种替代的名称为另一数据库对象,称为 作为基础对象,可以在 本地或远程服务器上存在。

  • 提供了一个抽象层,它保护客户端应用程序 免受对基础对象的名称或 位置所做的更改。

0

在一些企业系统中,你可能不得不处理过,你有没有控制远程对象。例如,由另一个部门或团队维护的数据库。

同义词可以帮助您从SQL代码中分离底层对象的名称和位置。这样,即使您想要的表移动到新的服务器/数据库或重命名,您也可以对同义词表进行编码。

例如,我可以写一个这样的查询:

insert into MyTable 
(...) 
select ... 
from remoteServer.remoteDatabase.dbo.Employee 

但随后如果服务器或数据库,模式或表更改它会影响我的代码。相反,我可以创建远程服务器的代名词,使用同义词代替:

insert into MyTable 
(...) 
select ... 
from EmployeeSynonym 

如果底层的对象改变位置或名称,我只需要更新我的代名词指向新的对象。的

http://www.mssqltips.com/sqlservertip/1820/use-synonyms-to-abstract-the-location-of-sql-server-database-objects/