如何使用4部分命名约定来调用“更新统计信息”作业中的链接服务器?

时间:2014-09-26 14:47:43

标签: sql sql-server ssms

我在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的其他功能。

根据我的理解,它通过链接服务器传递语句,而不是执行。

1 个答案:

答案 0 :(得分:0)

您可能不希望绕过此限制,因为跨分布式事务执行似乎是不明智的;-)。但你很幸运。您已经在使用SSIS。只需让SSIS连接到正确的服务器,然后通过该直接/本地连接执行UPDATE STATISTICS

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