Impossible d'utiliser le type de données LONG

J'essaie d'get du code SQL 2005 pour travailler sur SQL 2012 Express. Cependant, chaque fois que je mets le niveau de compatibility_level à 90 , je commets une erreur lorsque j'essaie d'utiliser des types de données plus anciens. En théorie, le code suivant devrait fonctionner:

 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 

Mais, j'ai l'erreur suivante:

Msg 2715, niveau 16, état 6, ligne 2 Colonne, paramètre ou variable # 4: impossible de find le type de données LONG.

Je suis sûr qu'il y a quelque chose de simple qui me manque, et j'ai juste besoin d'un coup de pouce dans la bonne direction. Ce n'est pas un problème d'autorisation et pour autant que je sache, le SET compatibility_level = 90 s'exécute correctement sans erreur. Encore, j'obtiens une erreur en utilisant LONG .

LONG n'est pas un type de données valide dans une version de SQL Server. Et changer le niveau de compatibilité n'affectera pas votre capacité à utiliser des types de données anciens ou nouveaux. Cela n'affecte que la façon dont certaines constructions de langage sont analysées.

Peut-être que vous vouliez dire DECIMAL ou BIGINT .

Et pour anticiper d'autres questions: LONGVARCHAR et AUTOINCREMENT ne sont pas non plus des types de données valides ( vérifiez la documentation au lieu de deviner ). Où avez-vous trouvé ce script, et qui a suggéré que cela devrait fonctionner dans SQL Server? Je pense que vous avez peut-être été pris. Essayez ceci à la place:

 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 

En aparté, toutes les autres colonnes de la table sont-elles vraiment nulles? Est-ce que le nom de votre table a vraiment besoin d'un suffixe Table ? Que signifie Sc ? Pourquoi ne pas appeler la table ce qu'elle représente (comme SocialCows ou ScientificCholesterol ) au lieu d'obscurcir le nom et d'append un suffixe sans signification juste pour encourir plus de dactylographie?