t-sql的链接服务器和同义词之间有什么区别?如果有的话,它们是什么,我在什么情况下会选择其中一种?
ServerName.DatabaseName.dbo.TableName
是表TableName
的同义词,由dbo
拥有,在ServerName
服务器上的DatabaseName
数据库中。sp_addlinkedserver
(Transact-SQL)语句来配置链接服务器。摘自这里。XYZ
现在可以按以下方式访问表格:
SELECT * FROM XYZ.dbo.Adventureworks.ProductCategory;
注意:您可以在查询和存储过程中使用上述四部分名称来访问不仅是“ProductCategory”,而且还可以访问任何其他表格和视图。
相反,您可以创建一个引用上述远程数据库对象的同义词,并且它可以有一个短名称,比如ProductCategoryRemote
,然后在您的查询中使用它,如下所示:
SELECT * FROM ProductCategoryRemote;
如果您决定使用不同的表格或服务器(比如从UAT环境移动到PROD环境),则只需删除并重新创建引用新对象的同义词即可。
注意:同义词可以引用同一数据库中的对象,同一服务器上的其他数据库或通过链接服务器引用另一个服务器中的对象,就像本例中一样。
总之,链接服务器用于访问外部数据源,而同义词用于为数据库对象创建别名。
SybaseLinkedServerName.DatabaseName.Owner.TableName
。这里有一篇相关的知识库文章:https://support.microsoft.com/zh-cn/kb/280102。 - Donal