删除“OPTIMIZE_FOR_SEQUENTIAL_KEY”会解决我的 script.sql 的失败问题还是涉及更多问题(SQL Server Express DB -> SQL Server)?

2024-04-22

我正在尝试在托管站点 (GoDaddy/Plesk) 上将 SQL Server Express 数据库设置为成熟的 SQL Server DB,但在运行 script.sql 文件时遇到了一系列错误消息。

我正在按照步骤操作here https://www.godaddy.com/help/move-my-microsoft-sql-server-database-to-plesk-19838要设置我的数据库,首先在连接到远程服务器时在 MSSMS 中运行 script.sql 文件。

我一直在连接时遇到问题,但最终能够按照 seanb 的建议省略端口号here https://stackoverflow.com/questions/64492199/how-can-i-upload-my-script-sql-file-and-my-database-file-to-godaddy-via-plesk?noredirect=1#comment114042987_64492199:

...但是我在运行脚本文件时收到这些错误消息:

这是因为我的数据库是 SQL Server Express,并且它正在尝试创建 SQL Server(标准/常规)数据库,并且“OPTIMIZE_FOR_SEQUENTIAL_KEY”正在转向“常规”SQL Server/TSQL?

如果是这样(或在任何情况下),我需要做什么才能让 sql 脚本运行?

更详细一点,所有的抱怨都是“‘OPTIMIZE_FOR_SEQUENTIAL_KEY’不是公认的 CREATE TABLE 选项”。除了一个,那就是:

关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前一个语句必须以分号终止。

至于“OPTIMIZE_FOR_SEQUENTIAL_KEY”问题,这是第一个被抱怨的地方:

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],

...至于“关键字‘with’附近的语法不正确”,这里是它发生的地方:

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

换句话说,它是完全相同的 TSQL,但应用于不同的列,并导致不同的错误消息 - 第一个抱怨“OPTIMIZE”,第二个只是含糊地抱怨接近“WITH”的东西

它们的上下文如下:

[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
 CONSTRAINT [CK_ACTORS_Column] UNIQUE NONCLUSTERED 
(
    [ActorId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

我很想简单地删除所有“OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF”语句,然后再试一次;这样做安全吗?


您的目标 SQL Server 只是一个旧版本。准确地说,它是 SQL Server 2014 SP3 CU4,而 OPTIMIZE_FOR_SEQUENTIAL_KEY 是 SQL Server 2019 中的一项新功能。SSMS 脚本始终会引用所有选项,即使设置为默认值以确保脚本的完全保真度,这有时会很痛苦。

您可以简单地删除该选项,并且脚本应该与 SQL 2014 兼容。事实上,如果您没有将任何选项设置为非默认值,则可以删除所有这些选项。

或者查看您的托管服务商是否有可用的 SQL Server 2019。或者升级您的主机:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除“OPTIMIZE_FOR_SEQUENTIAL_KEY”会解决我的 script.sql 的失败问题还是涉及更多问题(SQL Server Express DB -> SQL Server)? 的相关文章

随机推荐