Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan 'Opsi SET Salah' Saat Membangun Proyek Basis Data

Menurut BOL :

Untuk membuat tabel dengan kolom tetap yang dihitung, pengaturan koneksi berikut harus diaktifkan:

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

Nilai-nilai ini ditetapkan pada tingkat basis data dan dapat dilihat menggunakan:

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

Namun, opsi SET juga dapat diatur oleh aplikasi klien menghubungkan ke SQL Server.

Contoh sempurna adalah SQL Server Management Studio yang memiliki nilai default untuk SET ANSI_NULLS dan SET QUOTED_IDENTIFIER keduanya ke ON. Ini adalah salah satu alasan mengapa saya awalnya tidak dapat menduplikasi kesalahan yang Anda posting.

Bagaimanapun, untuk menduplikasi kesalahan, coba ini (ini akan menimpa pengaturan default 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
) 

Anda dapat memperbaiki kasus uji di atas dengan menggunakan:

SET ANSI_PADDING ON
SET ANSI_WARNINGS ON

Saya akan merekomendasikan untuk mengubah dua pengaturan ini dalam skrip Anda sebelum membuat tabel dan indeks terkait.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengatur Nama Aplikasi dalam string koneksi ADODB

  2. MS SQL Server - Kapan KURSOR bagus?

  3. Kasus Ketika nilai Berbeda kemudian menjumlahkan nilai lain?

  4. Cara menggunakan pernyataan IF/ELSE untuk memperbarui atau membuat entri node xml baru di Sql

  5. Rata-rata baris yang dikelompokkan di Sql Server