Cha*_*ake 10 sql-server-2008 visual-studio view linked-server ssdt
我有一个运行数据库的 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 OPENQUERY("LinkedServer", 'SELECT * FROM [DB].[dbo].tbStatus') AS
Run Code Online (Sandbox Code Playgroud)
我总是收到错误。
我不知道我在这里俯瞰什么。你?谢谢你的时间!
(遗憾的是我无法添加visual-studio-2013 标签,所以我使用了visual-studio)
我设法让它工作:
我创建了一个新的数据库项目master
。在那里我创建了一个文件夹Server Object
和一个文件LinkedServer.sql
。在 SQL 文件中,我添加了链接服务器:
GO
EXECUTE sp_addlinkedserver @server = N'LinkedServer', @srvproduct = N'sqlserver', @provider = N'SQLNCLI', @datasrc = N'LinkedServer.domain';
Run Code Online (Sandbox Code Playgroud)
在将数据库项目添加master
到我的解决方案并在我的原始数据库项目中引用它之后,我能够使用初始语法构建项目;
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)
归档时间: |
|
查看次数: |
32467 次 |
最近记录: |