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

SFr*_*sky 5 sql sql-server ssms

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

问题是更新统计语法不允许我调用由 4 部分组成的名称。

我想做这样的事情:

UPDATE STATISTICS [linked server].[database].[dbo].[table] 

WITH FULLSCAN

GO
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息,指出已超出最大前缀数。

有谁知道如何解决这个问题?我真的无法选择将其本地放在我的客户端数据库中。

找到答案

感谢所有对此表示支持的人,但我实际上找到了一个非常酷的解决方法,希望它可以帮助其他人。

EXEC [linked_server].[database].[sys].[sp_executesql] N'UPDATE STATISTICS [dbo].[table] WITH FULLSCAN'
Run Code Online (Sandbox Code Playgroud)

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

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

Sol*_*zky 0

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

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