Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur "Options SET incorrectes" lors de la création d'un projet de base de données

Selon BOL :

Pour créer une table avec une colonne calculée persistante, les paramètres de connexion suivants doivent être activés :

SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT ON
SET QUOTED_IDENTIFIER ON

Ces valeurs sont définies au niveau de la base de données et peuvent être consultées à l'aide de :

SELECT 
    is_ansi_nulls_on,
    is_ansi_padding_on,
    is_ansi_warnings_on,
    is_arithabort_on,
    is_concat_null_yields_null_on,
    is_numeric_roundabort_on,
    is_quoted_identifier_on
FROM sys.databases

Cependant, les options SET peuvent également être définies par l'application cliente connexion à SQL Server.

Un exemple parfait est SQL Server Management Studio qui a les valeurs par défaut pour SET ANSI_NULLS et SET QUOTED_IDENTIFIER sur ON. C'est l'une des raisons pour lesquelles je n'ai pas pu initialement reproduire l'erreur que vous avez publiée.

Quoi qu'il en soit, pour dupliquer l'erreur, essayez ceci (cela remplacera les paramètres par défaut de SSMS) :

SET ANSI_NULLS ON
SET ANSI_PADDING OFF
SET ANSI_WARNINGS OFF
SET ARITHABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON 
SET NUMERIC_ROUNDABORT OFF
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE T1 (
    ID INT NOT NULL,
    TypeVal AS ((1)) PERSISTED NOT NULL
) 

Vous pouvez résoudre le cas de test ci-dessus en utilisant :

SET ANSI_PADDING ON
SET ANSI_WARNINGS ON

Je recommanderais de peaufiner ces deux paramètres dans votre script avant la création de la table et des index associés.