Sql server Can';不要使用长数据类型
我正在尝试使用一些遗留的SQL 2005代码来处理SQL 2012 Express。但是,无论何时设置,当我尝试使用较旧的数据类型时,都会出错。理论上,以下代码应该有效: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
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也支持这些数据类型。