小编Cha*_*ake的帖子

在数据库项目中使用带有 OPENQUERY 的链接服务器

我有一个运行数据库的 SQL Server 2008,我想放入 TFS。因此,我使用了导入数据库的 Visual Studio 2013 数据库项目。修复了一堆错误后,我只剩下一个错误:

在一个视图中,开发人员用于OPENQUERY访问链接服务器。因此,我导入了一个包含正确数据库的 DACPAC,并Add Database Reference使用以下参考选项将其添加到项目中。

数据库参考设置

初始脚本版本

这是原始视图创建的较短版本:

CREATE VIEW dbo.vwStatus
AS
SELECT     StatusID, StatusName
FROM       OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1
Run Code Online (Sandbox Code Playgroud)

这导致以下错误:

错误 136 SQL71501:视图:[dbo].[vwStatus] 具有对对象 [LinkedServer] 的未解析引用。

第一次尝试

所以我尝试插入服务器名称变量

FROM       OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1
Run Code Online (Sandbox Code Playgroud)

这导致

错误 176 SQL46010:$(LinkedServer) 附近的语法不正确。

进一步的尝试

我稍微摆弄了一下并尝试了以下操作(启用和不启用带引号的标识符):

FROM       OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY([$(LinkedServer)], 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY([LinkedServer], 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 visual-studio view linked-server ssdt

10
推荐指数
1
解决办法
3万
查看次数