SYNONYM为可能存在于本地或另一台服务器上的数据库对象(称为原始对象)提供了另一个名称。同义词属于架构,同义词的名称应唯一。同义词不能是其他同义词的原始对象,并且同义词不能引用用户定义的函数。
下面的查询将为数据库中的每个同义词生成一个条目。此查询提供有关同义词元数据的详细信息,例如同义词名称和基础对象的名称。
select *
from sys.synonyms ;
注意:同义词是数据库相关的,其他数据库无法访问。
句法 –
CREATE SYNONYM synonymname
FOR servername.databasename.schemaname.objectname;
GO
例子 –
让我们假设GFGdatabase的Geektabtable,名为Server1的服务器上的Geeekshschema。要从另一个服务器Server2引用此表,应用程序必须使用四部分组成的名为Server1.GFG.Geeeksh.Geektab。同样,如果要将表的位置更改为(例如)另一台服务器,则必须修改应用程序以反映该更改。
为了解决这两个问题,可以在Server2上为Server1上的Geektabtable创建同义词Geektable。现在,该应用程序仅需使用单部分名称Geektable来指向Geektab表。另外,如果Geektab表的位置发生变化,则必须修改同义词Geektable,以指向Geektab表的新位置。
现在,让我们为GFG数据库的Geektab表(服务器Server1上的Geeeksh模式)创建同义词。
CREATE SYNONYM Geektable
FOR Server1.GFG.Geeeksh.Geektab;
GO
使用同义词在Server2中查找输出。
SELECT ID, Name
FROM Geektable;
输出 –
ID | Name |
---|---|
1 | Nisha |
2 | Mira |
3 | Punit |
4 | Ram |
(4 row(s) affected)