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

时间:2015-06-09 19:46:22

标签: sql-server

t-sql链接服务器和同义词之间有区别吗?如果是这样的话,那么我会选择哪一个呢?

2 个答案:

答案 0 :(得分:4)

使用链接服务器连接到其他服务器上的数据库。您使用同义词指定要在SQL中访问的对象(例如表),它就像一个别名。有关详细信息,请参阅here

例如,ServerName.DatabaseName.dbo.TableNameTableName所拥有的表dbo的同义词,位于服务器DatabaseName上的数据库ServerName中。

链接服务器是您要连接的其他服务器(或实例)。

基本上,您配置链接服务器以访问其他数据库实例。您可以使用同义词指定要在TSQL中的不同实例上使用的对象。

您可以使用SQL Server Management Studio或使用sp_addlinkedserver(Transact-SQL)语句配置链接服务器。取自here

答案 1 :(得分:0)

链接服务器和同义词在SQL Server中用于不同目的。一个不能替代另一个。

链接服务器是一种建立与外部数据源的连接的方式,该外部数据源可以是另一个SQL Server,Oracle或具有OLE DB提供程序的任何其他类型的数据。 更多信息here

同义词是一种为数据库对象创建别名的方法,以简化SQL查询中的名称并提供抽象层,以减少引用对象更改名称或位置时对客户端查询的影响。 更多信息here

让我们说您正在使用SQL Server ABC,并且想创建一个存储过程,该存储过程需要访问SQL Server ProductCategoryAdventureworks数据库中的XYZ表。

  1. 您首先要创建一个链接服务器,并使用某些名称-通常与目标名称相同-XYZ
  2. 您现在可以按以下方式访问表

    SELECT * FROM XYZ.dbo.Adventureworks.ProductCategory;

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

  3. 这么长的名称使查询变得很复杂,如果您必须指向其他服务器或表,则必须更改所有查询。
  4. 相反,您可以创建引用远程数据库对象上方的同义词,并且可以使用短名称(ProductCategoryRemote),然后在查询中将其用作

    SELECT * FROM ProductCategoryRemote;

    如果您决定使用其他表或服务器(例如,从UAT迁移到PROD环境时),只需要做的就是删除并重新创建引用新对象的同义词。

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

最后,要求链接服务器访问外部数据源,并且同义词用于创建数据库对象的别名。