t-sql链接服务器和同义词之间有区别吗?如果是这样的话,那么我会选择哪一个呢?
答案 0 :(得分:4)
使用链接服务器连接到其他服务器上的数据库。您使用同义词指定要在SQL中访问的对象(例如表),它就像一个别名。有关详细信息,请参阅here。
例如,ServerName.DatabaseName.dbo.TableName
是TableName
所拥有的表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 ProductCategory
上Adventureworks
数据库中的XYZ
表。
XYZ
您现在可以按以下方式访问表
SELECT * FROM XYZ.dbo.Adventureworks.ProductCategory;
注意:您可以在查询和存储过程中使用上面的四部分名称,不仅可以访问“ ProductCategory”,还可以访问任何其他表和视图。
相反,您可以创建引用远程数据库对象上方的同义词,并且可以使用短名称(ProductCategoryRemote
),然后在查询中将其用作
SELECT * FROM ProductCategoryRemote;
如果您决定使用其他表或服务器(例如,从UAT迁移到PROD环境时),只需要做的就是删除并重新创建引用新对象的同义词。
注意:如本例中所示,同义词可以通过链接服务器引用同一数据库,同一服务器上的其他数据库或另一服务器上的对象。
最后,要求链接服务器访问外部数据源,并且同义词用于创建数据库对象的别名。