删除“ OPTIMIZE_FOR_SEQUENTIAL_KEY”是否可以解决我的script.sql失败或涉及更多问题SQL Server Express数据库-> SQL Server?

问题描述

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

我正在按照步骤here设置数据库,首先是在连接到远程服务器的同时在MSSMS中运行我的script.sql文件。

我一直无法连接,但最终能够按照seanb here的建议通过省去端口号来实现:

enter image description here

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

enter image description here

这是因为我的数据库是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,OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

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

它们在上下文中:

[Id] ASC
)WITH (PAD_INDEX = OFF,CONSTRAINT [CK_ACTORS_Column] UNIQUE NONCLUSTERED 
(
    [ActorId] ASC
)WITH (PAD_INDEX = OFF,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。或升级您的托管服务商:)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...