Sql server Can';不要使用长数据类型

Sql server Can';不要使用长数据类型,sql-server,backwards-compatibility,Sql Server,Backwards Compatibility,我正在尝试使用一些遗留的SQL 2005代码来处理SQL 2012 Express。但是,无论何时设置,当我尝试使用较旧的数据类型时,都会出错。理论上,以下代码应该有效: USE wsus_results GO ALTER DATABASE wsus_results SET compatibility_level = 90 GO CREATE TABLE ScTable ( TblName VARCHAR(255) NULL, TblType VARCHAR(255) NULL, F

我正在尝试使用一些遗留的SQL 2005代码来处理SQL 2012 Express。但是,无论何时设置,当我尝试使用较旧的数据类型时,都会出错。理论上,以下代码应该有效:

USE wsus_results
GO

ALTER DATABASE wsus_results
SET compatibility_level = 90
GO

CREATE TABLE ScTable (
 TblName VARCHAR(255) NULL,
 TblType VARCHAR(255) NULL, 
 FieldCnt INTEGER NULL,
 RecordCnt LONG NULL,
 Description LONGVARCHAR NULL,
 TblId AUTOINCREMENT PRIMARY KEY)
GO
但是,我得到了以下错误:

Msg 2715,16级,状态6,第2行列,参数或变量#4: 找不到长数据类型


我确信我遗漏了一些简单的东西,我只需要朝着正确的方向轻推一下。这不是权限问题,据我所知,
SET compatibility\u level=90
执行良好,没有错误。尽管如此,当使用
LONG
LONG
在任何版本的SQL Server中都不是有效的数据类型时,我还是会遇到一个错误。更改兼容性级别不会影响您使用旧数据类型或新数据类型的能力。这只会影响某些语言构造的解析方式

也许你的意思是
DECIMAL
BIGINT

为了避免进一步的问题:
LONGVARCHAR
AUTOINCREMENT
也不是有效的数据类型()。您从何处获得此脚本,谁建议它在SQL Server中工作?我想你可能被恶作剧了。请尝试以下方法:

USE wsus_results;
GO

ALTER DATABASE wsus_results
SET compatibility_level = 110;
GO

CREATE TABLE dbo.ScTable -- schema prefix is important!
(
 TblName     VARCHAR(255),
 TblType     VARCHAR(255), 
 FieldCnt    INT,
 RecordCnt   BIGINT,
 Description VARCHAR(MAX),
 TblId       INT IDENTITY(1,1) NOT NULL PRIMARY KEY
);
GO

另一方面,表中的其他每一列真的可以为空吗?您的表名真的需要后缀
table
Sc
是什么意思?为什么不实际调用表所代表的内容(例如
SocialCows
scientific
),而不是混淆名称并添加一个无意义的后缀,以引起更多的键入?

RMDBS使用的
LONG
createtable
语句在未修改的地方工作。请原谅我和我的缺点,但是这段代码落在了我的膝上,我已经有好几年没有使用SQL了。我认为这应该是用于和
.mdb
文件。@hydroparadise看起来可能是用于访问,但肯定不是用于SQL Server。对于仍在阅读此文件的任何人,Gupta(OpenText)SQLBase(.dbs)文件也使用“LONG”或“LONGVARCHAR”或“LONGBINARY”和“AUTOINCREMENT”。Gupta SQLBase松散地派生自Oracle,Oracle也支持这些数据类型。