我有一个运行数据库的 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)