SQL Server:当数据库可能在同一台服务器上时使用 4 部分标识符

Rya*_*oss 6 sql-server linked-server ssdt

在我客户端的设置中,为了节省成本,较低环境中的数据库服务器都在一台服务器上,但在较高环境中,这些数据库部署在单独的服务器上,并且在跨服务器运行查询时使用链接服务器。

示例设置:

Dev:
  Server1: DB1, DB2
UAT: 
  Server1: DB1 (with linked server for DB2)
  Server2: DB2
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用一组 SQL Server Data Tools 项目来维护数据库,使用 4 个部分[server].[database].[schema].[object]标识符和数据库引用变量来对关系进行建模。当数据库不在同一台服务器上时这很有效,但当数据库在同一台服务器上时会失败。

我的问题:

  1. 除了省略服务器定义之外,是否有默认方法可以在 4 部分标识符中引用本地服务器?
  2. 如果没有,有没有办法添加指向本地服务器的链接服务器?
  3. 如果上述两种方法都不可能,是否有另一种方法可以在 SQL Server 中进行管理?

Aar*_*and 11

使用同义词,只是不要同步同义词。所以当它在本地服务器上时:

CREATE SYNONYM dbo.FooBar FOR DBName.dbo.TableName;
Run Code Online (Sandbox Code Playgroud)

远程时:

CREATE SYNONYM dbo.FooBar FOR ServerName.DBName.dbo.TableName;
Run Code Online (Sandbox Code Playgroud)

现在,您的所有代码都必须引用,dbo.FooBar无论它在哪里。

  • 这似乎是问题的合乎逻辑的解决方案 (2认同)