【问题标题】:This query for creating tables works on dev but not on live此用于创建表的查询适用于开发,但不适用于实时
【发布时间】:2012-12-18 13:31:12
【问题描述】:
USE [DatabaseName]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TableName](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [URL] [varchar](max) NOT NULL,
    [User] [varchar](1000) NOT NULL,
    [Time] [datetime] NOT NULL,
 CONSTRAINT [PK_TableName] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

它适用于 SQL Server 2005 的开发环境,但不适用于 SQL Server 2012 并出现此错误,

消息 170,级别 15,状态 1,第 3 行第 3 行:附近的语法不正确 '最大'。

编辑

2012 实际上是 2000,但是网络管理员做了一些事情,以便我可以使用 2012 管理工具工作室连接到它

【问题讨论】:

  • 您的数据库的兼容级别是否 > 80?
  • 这是什么意思,我正在阅读一些帖子,它应该是 90,但我不确定它会对实时数据库产生什么影响
  • 这意味着您有一个从 SQL Server 2000 恢复的数据库。(或使用兼容级别 80 创建的)。此处描述了更改的影响:msdn.microsoft.com/en-us/library/bb510680.aspx 根据我的经验,影响通常很小甚至没有。

标签: sql sql-server-2005 windows-server-2003 sql-server-2012


【解决方案1】:

此错误的原因是当用户试图运行与以前版本的 SQL Server 不兼容的查询或过程或逻辑时。当 SQL Server 2000 升级到 SQL Server 2005 或 SQL Server 2008 时,数据库对象兼容性也应该升级到下一个版本。当数据库兼容性设置为以前的版本并尝试使用较新版本的程序时,它们将抛出上述错误。

修复/解决方法/解决方案:

使用以下命令更改数据库兼容级别。

EXEC sp_dbcmptlevel 'DatabaseName', 90

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2011-05-20
    • 2020-04-13
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多