用于报告服务的链接服务器上的SQL Server触发

问题描述:

我有和SQL服务器连接到单独服务器上的SQL数据库的报告表。链接的服务器由第三方供应商维护,所以我不想添加触发器......我希望能够根据在链接表上插入的值运行报表。试过以下内容:用于报告服务的链接服务器上的SQL Server触发

CREATE TRIGGER [dbo].[RunReport] ON [linkedServer].[database].[dbo]. 
    [CustomerComments] 
    FOR INSERT 
    AS 
    exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', 
    @EventData='xxxxx' 

我得到错误“包含超过最大数量的前缀,最大值为2”。无论如何触发我的报告,而不改变链接的数据库。我也创建了一个无效的链接表视图。

感谢,

+0

如果使用的是完整的SQL Server(不表达),您可以创建一个作业将经常检查链接表中是否有新记录。 – Mat

+0

在执行SSRS报告的链接服务器上的表上创建触发器听起来像是一个非常糟糕的主意。 –

+0

将触发器放在不同数据库中的表上看起来像是一个有缺陷的概念。当这张桌子被保留下来时,你希望发生什么?你是否想让你的触发器接受这些变化? – Greenspark

撇开想法,你可以链接服务器上创建触发器是这样的:

exec [linkedServer].[database].sys.sp_executesql N'CREATE TRIGGER [dbo].[RunReport] ON [dbo]. 
    [CustomerComments] 
    FOR INSERT 
    AS 
    exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', 
    @EventData='xxxxx' 
+0

谢谢,我对这一切都很陌生。这是不好的做法吗?我应该只将SSRS添加到实际的服务器,还是将SSRS服务器与实际的表链接到服务器? –

+0

触发器是您交易的一部分,请考虑如果您的报表服务器由于某种原因不可用会发生什么情况。也许你应该使用Service Broker发送消息,而另一台服务器(不是Express)可以处理它?至少你的交易将独立于异步的消息处理而成功 – sepupic