在 ALTER DATABASE 语句中无效使用选项 flush_interval_seconds

Invalid usage of the option flush_interval_seconds in the ALTER DATABASE statement

我在 visual studio 中创建了一个数据库项目,但是当我发布时出现错误:

Invalid usage of the option flush_interval_seconds in the ALTER DATABASE statement

生成的代码是:

Msg 153, Level 15, State 5, Line 5
Invalid usage of the option flush_interval_seconds in the ALTER DATABASE statement.
(43,0): SQL72045: Script execution error. The executed script:

IF EXISTS (SELECT 1
           FROM   [master].[dbo].[sysdatabases]
           WHERE  [name] = N'$(DatabaseName)')
    BEGIN
        ALTER DATABASE [$(DatabaseName)]
            SET QUERY_STORE (DATA_FLUSH_INTERVAL_SECONDS = 0, INTERVAL_LENGTH_MINUTES = 0) 
            WITH ROLLBACK IMMEDIATE;
    END

SQL72014: .Net SqlClient Data Provider:
Msg 153, Level 16, State 6, Line 5
Invalid usage of the option interval_length_minutes in the ALTER DATABASE statement.

(43,0): SQL72045: Script execution error. The executed script:

IF EXISTS (SELECT 1
           FROM   [master].[dbo].[sysdatabases]
           WHERE  [name] = N'$(DatabaseName)')
    BEGIN
        ALTER DATABASE [$(DatabaseName)]
            SET QUERY_STORE (DATA_FLUSH_INTERVAL_SECONDS = 0, INTERVAL_LENGTH_MINUTES = 0) 
            WITH ROLLBACK IMMEDIATE;
    END

An error occurred while the batch was being executed.

我正在努力寻找关于此问题的任何参考资料、导致它的原因以及最终如何解决它,因此欢迎提供任何指导。

编辑:上面的SQL是从Visual Studio

发布数据库时自动生成的

DATA_FLUSH_INTERVAL_SECONDS 的零值没有意义,因为该值用于异步刷新。我认为 60 秒是最短的。另外,1分钟是最小值INTERVAL_LENGTH_MINUTES,定长统计时间的大小window。

您可以使用 Visual Studio 进行设置。

解决方案资源管理器 -> 数据库项目 -> 右键单击​​ -> 属性 -> 项目设置 -> 数据库设置 -> 查询存储

将 0 更改为所需的值。


相关:SSDT: SQL Project Options and Database Project Settings

如果这不起作用,则意味着您在 Pre/Post 部署文件夹中有自定义 SQL 脚本。