Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server reporting services链接服务器上的SQL Server触发器_Sql Server_Triggers_Linked Server - Fatal编程技术网

Sql server reporting services链接服务器上的SQL Server触发器

Sql server reporting services链接服务器上的SQL Server触发器,sql-server,triggers,linked-server,Sql Server,Triggers,Linked Server,我有一个SQL server和一个报表表,该报表表链接到另一台服务器上的SQL数据库。链接服务器由第三方供应商维护,因此我不希望添加触发器。。。我希望根据插入到链接表中的值运行一个报告。尝试了以下操作: CREATE TRIGGER [dbo].[RunReport] ON [linkedServer].[database].[dbo]. [CustomerComments] FOR INSERT AS exec [ReportServer].dbo.AddEvent @E

我有一个SQL server和一个报表表,该报表表链接到另一台服务器上的SQL数据库。链接服务器由第三方供应商维护,因此我不希望添加触发器。。。我希望根据插入到链接表中的值运行一个报告。尝试了以下操作:

  CREATE TRIGGER [dbo].[RunReport] ON [linkedServer].[database].[dbo].
  [CustomerComments]
  FOR INSERT
  AS 
  exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', 
  @EventData='xxxxx'
我得到错误“包含的前缀数超过了最大值。最大值为2”。无论如何,我都无法在不更改链接数据库的情况下触发我的报告。我还创建了一个链接表的视图,该视图也不起作用


谢谢,

抛开这个想法不谈,您可以通过以下方式在链接服务器上创建触发器:

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'

如果您使用的是完整SQL Server(不是express),则可以创建一个作业,该作业将经常检查链接表中是否有新记录。在链接服务器上执行SSRS报告的表上创建触发器听起来是一个非常糟糕的主意。在不同数据库中的表上放置触发器似乎是一个有缺陷的概念。当该表在其端得到维护时,您预计会发生什么?你想让你的扳机触发这些变化吗?谢谢,我对这一切都是新手。这是坏习惯吗?我应该只将SSRS添加到实际服务器上,还是将SSRS服务器链接到具有实际表的服务器上?触发器是事务的一部分,请思考如果报表服务器因某种原因不可用会发生什么情况。也许您应该使用ServiceBroker发送消息,而另一台服务器(不是Express)可以处理它?至少您的事务将独立于异步消息处理而成功