如何使用 4 部分命名约定在"updates statistics"作业中调用链接服务器?



我正在Integration服务器上设置一个作业,以便在我的客户端数据库上运行统计更新。

问题是更新统计信息语法不允许我调用4部分名称。

我想做这样的事情:

UPDATE STATISTICS [linked server].[database].[dbo].[table] 
WITH FULLSCAN
GO

但我收到一个错误,说明已经超过了前缀的最大数量。

有人知道如何绕过这个吗?我真的没有选择把它放在我的客户端数据库本地。

答案找到

感谢每一个向这个致敬的人,但我实际上为这个找到了一个非常酷的解决方法,希望它能帮助其他人。

EXEC [linked_server].[database].[sys].[sp_executesql] N'UPDATE STATISTICS [dbo].[table] WITH FULLSCAN'

这可以用于截断、触发器启用和禁用,以及链接服务器之间不允许使用的SQL的其他功能。

据我所知,它通过链接服务器而不是执行来传递语句。

您可能不想绕过这个限制,因为在分布式事务中这样做似乎是不明智的;-)。但你很幸运。您已经在使用SSIS。只需将SSIS连接到适当的服务器,并通过该直接/本地连接执行UPDATE STATISTICS即可。

此外,由于您使用的是SSIS,因此它有一个更新统计信息的任务:

  • 更新统计任务(维护计划)
  • 更新统计信息任务

最新更新