sql >> Base de Datos >  >> RDS >> Sqlserver

Error de "Opciones SET incorrectas" al crear un proyecto de base de datos

Según BOL :

Para crear una tabla con una columna calculada persistente, se deben habilitar las siguientes configuraciones de conexión:

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

Estos valores se establecen en el nivel de la base de datos y se pueden ver usando:

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

Sin embargo, las opciones SET también pueden ser configuradas por la aplicación cliente conectándose a SQL Server.

Un ejemplo perfecto es SQL Server Management Studio, que tiene los valores predeterminados para SET ANSI_NULLS y SET QUOTED_IDENTIFIER ambos en ON. Esta es una de las razones por las que inicialmente no pude duplicar el error que publicaste.

De todos modos, para duplicar el error, intente esto (esto anulará la configuración predeterminada 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
) 

Puede arreglar el caso de prueba anterior usando:

SET ANSI_PADDING ON
SET ANSI_WARNINGS ON

Recomendaría ajustar estas dos configuraciones en su secuencia de comandos antes de la creación de la tabla y los índices relacionados.