我有 3 个 SQL 服务器X
和2 个Y
数据库和. 有(许多)视图在其定义中使用 4 级命名:Z
X.A
Y.B
X.A
SELECT ... FROM Y.B.SCHEMA.TABLE
由此我推断其中X
包含Y
. 我正在从备份文件恢复X.A
并从服务器中恢复,所以我现在
在同一台服务器上可用。但这些观点显然是由于不知道是什么而失败的。Y.B
Z
Z.A
Z.B
Z
Y
我希望这些视图能够在恢复的数据库Z.A
中工作,这样它们就可以从Z.B
(而不是从Y.B
)获取数据,而无需更改视图(有很多这样的视图)。我不确定这是否可能。我可以Z
根据需要在服务器上进行更改,但我没有任何访问权限X
和Y
. 视图的用户也只能访问Z
.
我考虑过定义一个同义词Y
inZ
指向,localhost
但似乎在创建新同义词时我至少需要引用 schema 或 schema.table。或者我可以只使用服务器名称的同义词吗?
我还考虑过定义一个名为Y
in的链接服务器Z
,但指向它自己。在这里,我只能创建一个名为localhost
指向自身的链接服务器,这无助于解决我的问题。
这是可能吗?我可以说服 SQL Server在视图定义中引用Z
时使用吗?Y
同义词对您的需要没有用处,因为这需要更改视图定义以指定两部分名称。
Y
通过选择“其他数据源”(而不是 SQL Server),然后指定 SQL Server 提供程序,可以使用 SSMS创建具有名称的环回链接服务器。这也可以通过 T-SQL 完成:您还需要根据您的要求配置链接服务器安全上下文。