链接服务器和同义词之间的区别是什么?

11

t-sql的链接服务器和同义词之间有什么区别?如果有的话,它们是什么,我在什么情况下会选择其中一种?

2个回答

4
您可以使用链接服务器连接到不同服务器上的数据库。在SQL中,您可以使用同义词指定要访问的对象(例如表),它类似于别名。有关更多信息,请参见这里
例如,ServerName.DatabaseName.dbo.TableName是表TableName的同义词,由dbo拥有,在ServerName服务器上的DatabaseName数据库中。
链接服务器是您想要连接到的另一个服务器(或实例)。
基本上,您配置链接服务器以访问不同的数据库实例。您可以在TSQL中使用同义词来指定要在另一个实例上使用的对象。
您可以使用SQL Server Management Studio或使用sp_addlinkedserver(Transact-SQL)语句来配置链接服务器。摘自这里

2
同义词可以访问不同 SQL 服务器上的数据库吗? - dirtyw0lf
请考虑添加一些到 MSDN 的链接。 - Zohar Peled
链接在其中。第一段的最后一个单词是超链接。最后一段的最后一个单词也是超链接。 - Donal
如果T-SQL中的链接服务器指向Sybase,那么同义词能否指向该链接服务器以在T-SQL中使用? - dirtyw0lf
1
@dirtyw0lf,你的T-SQL应该是这样的:SybaseLinkedServerName.DatabaseName.Owner.TableName。这里有一篇相关的知识库文章:https://support.microsoft.com/zh-cn/kb/280102。 - Donal

2
“联接服务器”和“同义词”在SQL Server中用于不同的目的,它们不能相互替代。
“联接服务器”是建立与外部数据源的连接的一种方式,这个数据源可以是另一个SQL Server、Oracle或任何具有OLE DB提供程序的数据类型。更多信息请点击这里
“同义词”是创建数据库对象别名的一种方法,以简化SQL查询中的名称,并提供抽象层以减少当引用对象更改名称或位置时对客户端查询的影响。更多信息请点击这里
假设您正在SQL Server ABC上,并想创建一个存储过程,该存储过程需要访问SQL Server XYZ上Adventureworks数据库中的ProductCategory表。
  1. 首先,您需要创建一个链接服务器并为其命名 - 通常与目标相同 - XYZ
  2. 现在可以按以下方式访问表格:

    SELECT * FROM XYZ.dbo.Adventureworks.ProductCategory;

    注意:您可以在查询和存储过程中使用上述四部分名称来访问不仅是“ProductCategory”,而且还可以访问任何其他表格和视图。

  3. 这样的长名称会使您的查询变得复杂,如果您必须指向不同的服务器或表格,则必须更改所有查询。
  4. 相反,您可以创建一个引用上述远程数据库对象的同义词,并且它可以有一个短名称,比如ProductCategoryRemote,然后在您的查询中使用它,如下所示:

    SELECT * FROM ProductCategoryRemote;

    如果您决定使用不同的表格或服务器(比如从UAT环境移动到PROD环境),则只需删除并重新创建引用新对象的同义词即可。

    注意:同义词可以引用同一数据库中的对象,同一服务器上的其他数据库或通过链接服务器引用另一个服务器中的对象,就像本例中一样。

总之,链接服务器用于访问外部数据源,而同义词用于为数据库对象创建别名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接