Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd „Nieprawidłowe opcje SET” podczas budowania projektu bazy danych

Według BOL :

Aby utworzyć tabelę z utrwaloną, obliczaną kolumną, należy włączyć następujące ustawienia połączenia:

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

Wartości te są ustawiane na poziomie bazy danych i można je przeglądać za pomocą:

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

Jednak opcje SET mogą być również ustawione przez aplikację kliencką połączenie z serwerem SQL.

Doskonałym przykładem jest SQL Server Management Studio, w którym wartości domyślne SET ANSI_NULLS i SET QUOTED_IDENTIFIER są ustawione na ON. To jeden z powodów, dla których nie mogłem początkowo powielić błędu, który zamieściłeś.

W każdym razie, aby zduplikować błąd, spróbuj tego (spowoduje to nadpisanie domyślnych ustawień 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
) 

Możesz naprawić powyższy przypadek testowy, używając:

SET ANSI_PADDING ON
SET ANSI_WARNINGS ON

Zalecam dostosowanie tych dwóch ustawień w skrypcie przed utworzeniem tabeli i powiązanych indeksów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql:POMIĘDZY v1 A v2

  2. Jaka jest najlepsza konfiguracja programu SQL Server dla środowiska programistycznego?

  3. Generuj losowe nazwy w sql

  4. Składnia pętli for w SQL Server

  5. Warunkowe ORDER BY w zależności od wartości kolumn