Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка „Неправилни опции за SET“ при изграждане на проект за база данни

Според BOL :

За да създадете таблица с постоянна, изчислена колона, трябва да се активират следните настройки за връзка:

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

Тези стойности са зададени на ниво база данни и могат да се видят с помощта на:

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

Въпреки това, опциите SET също могат да бъдат зададени от клиентското приложение свързване към SQL Server.

Перфектен пример е SQL Server Management Studio, който има стойностите по подразбиране за SET ANSI_NULLS и SET QUOTED_IDENTIFIER и двете на ON. Това е една от причините, поради които първоначално не можах да дублирам грешката, която публикувахте.

Както и да е, за да дублирате грешката, опитайте това (това ще замени настройките по подразбиране на 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
) 

Можете да коригирате тестовия случай по-горе, като използвате:

SET ANSI_PADDING ON
SET ANSI_WARNINGS ON

Бих препоръчал да промените тези две настройки във вашия скрипт преди създаването на таблицата и свързаните индекси.



  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 Server

  2. Model Entity Framework много-много плюс споделена релация

  3. SQL Server 2017:Копиране на данни от SQL Server от Linux към Windows с SSIS

  4. Композитен първичен ключ + външен ключ

  5. Как мога да вмъкна произволни стойности в таблица на SQL Server?