Visual Studio数据库项目使用链接服务器数据库引用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio数据库项目使用链接服务器数据库引用相关的知识,希望对你有一定的参考价值。
我试图在Visual Studio 2013(使用SQLServer 2008)项目中使用链接的服务器数据库引用。
我可以通过使用此链接中列出的引用创建另一个项目来构建它:
[Do I need a database reference for a linked server in a SQL Server database project?
但是项目在部署步骤失败,出现以下错误:错误474 SQL72014:.Net SqlClient数据提供程序:消息7202,级别11,状态2,过程rs_ReportSubscriptions,第3行无法在sys.servers中找到服务器'TBSSRV07 TBSSQLDEVSRV' 。验证是否指定了正确的服务器名称。如有必要,执行存储过程sp_addlinkedserver以将服务器添加到sys.servers。有关此错误的详细信息,请参阅产品文档中的疑难解答主题。 C: TFS2010 EtracsDatabase Etracs BIN 调试 Etracs.sql
在部署的服务器上,这是有效的(使用链接服务器...链接:TBSSRV07 TBSSQLDEVSRV)
这是在创建脚本的视图中发生的。我试图将sp_addLinkedServer添加到脚本中......但是在部署代码中,我的sp_addlinkedServer没有出现:
以下是视图创建的代码:
EXEC sp_addlinkedserver
@server=N'TBSSRV07',
@srvproduct=N'',
@provider=N'SQLNCLI',
@datasrc=N'TBSSRV07TBSSQLDEVSRV';
GO
CREATE VIEW [dbo].[rs_ReportSubscriptions] AS
SELECT C.Name ,
CAST(ExtensionSettings AS XML).value('(/ParameterValues/ParameterValue/Value)[1]',
'varchar(250)') AS TargetSettingsTo ,
CAST(ExtensionSettings AS XML).value('(/ParameterValues/ParameterValue/Value)[2]',
'varchar(250)') AS TargetSettingsCC ,
LastStatus ,
LastRunTime
FROM [$(TBSSRV07)].[$(ReportServer)].dbo.Subscriptions AS S
JOIN [$(TBSSRV07)].[$(ReportServer)].dbo.Catalog AS C ON C.ItemID = S.Report_OID
以下是产生问题的结果脚本:
GO
PRINT N'Creating [dbo].[rs_ReportSubscriptions]...';
GO
CREATE VIEW [dbo].[rs_ReportSubscriptions] AS
SELECT C.Name ,
CAST(ExtensionSettings AS XML).value('(/ParameterValues/ParameterValue/Value)[1]',
'varchar(250)') AS TargetSettingsTo ,
CAST(ExtensionSettings AS XML).value('(/ParameterValues/ParameterValue/Value)[2]',
'varchar(250)') AS TargetSettingsCC ,
LastStatus ,
LastRunTime
FROM [$(TBSSRV07)].[$(ReportServer)].dbo.Subscriptions AS S
JOIN [$(TBSSRV07)].[$(ReportServer)].dbo.Catalog AS C ON C.ItemID = S.Report_OID
GO
PRINT N'Update complete.';
最后这里是我在数据库参考中使用的值:: setvar TBSSRV07“TBSSRV07 TBSSQLDEVSRV”
不确定这是否是“最佳”答案,但在这种情况下,我添加了一个预部署脚本来创建链接服务器(如果它不存在)。
IF NOT EXISTS (SELECT 1 FROM sys.servers s WHERE s.[name] = N'$(TBSSRV07)' AND s.is_linked = 1)
BEGIN
EXECUTE sp_addlinkedserver N'$(TBSSRV07)', ...
以上是关于Visual Studio数据库项目使用链接服务器数据库引用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio 2010 将 libexif 编译为静态库 - 然后从 Visual C++ 项目链接
使用 Visual Studio 项目使 Opencv 可移植并消除链接错误