Włączenie tego ustawienia powoduje, że SQL Server przestrzega reguł ISO dotyczących identyfikatorów rozdzielających znaki cudzysłowu i ciągów literałów. Identyfikatory rozdzielone podwójnymi cudzysłowami mogą być zastrzeżonymi słowami kluczowymi języka T-SQL lub mogą zawierać znaki, które nie są ogólnie dozwolone przez reguły składni języka T-SQL dla identyfikatorów.

SET QUOTED_IDENTIFIER { ON | OFF }

Gdy to ustawienie jest włączone (domyślnie) SET QUOTED_IDENTIFIER ON identyfikatory mogą być rozdzielane podwójnymi cudzysłowami (” „), a literały muszą być rozdzielane pojedynczymi cudzysłowami (’ ’). Wszystkie ciągi rozdzielane podwójnymi cudzysłowami są interpretowane jako identyfikatory obiektów. W związku z tym identyfikatory w cudzysłowach nie muszą być zgodne z regułami języka T-SQL dotyczącymi identyfikatorów. Mogą to być zarezerwowane słowa kluczowe i mogą zawierać znaki, które nie są ogólnie dozwolone w identyfikatorach T-SQL. Nie można używać podwójnych cudzysłowów do oddzielania dosłownych wyrażeń łańcuchowych; Aby ująć ciągi literałów, należy użyć pojedynczych cudzysłowów. Jeśli pojedynczy cudzysłów (’) jest częścią ciągu literału, może być reprezentowany przez dwa pojedyncze cudzysłowy (’ ’).

UWAGA – używając SSMS domyślnie w ramach sesji ustawienie to jest WŁĄCZONE. Jeśli wykonujemy skrypty zapisane w krokach joba uruchamianego przez SQL Server Agenta ustawienie to domyślnie jest WYŁĄCZONE. Należy zwrócić na to uwagę bo często kod napisany i testowany w SSMS przestaje działać w SQL Server Agent.

SET QUOTED_IDENTIFIER ON ustawienie, gdy zarezerwowane słowa kluczowe są używane dla nazw obiektów w bazie danych.

Ustawienie to musi być WŁĄCZONE podczas tworzenia lub zmiany indeksów w kolumnach wyliczanych lub widokach indeksowanych. Jeśli jest wyłączone, instrukcje CREATE, UPDATE, INSERT i DELETE nie będą działać w przypadku tabel z indeksami w kolumnach wyliczanych lub tabelach z widokami indeksowanymi.

Musi być WŁĄCZONE podczas tworzenia indeksu filtrowanego lub operacjach na typie danych XML.

Gdy SET QUOTED_IDENTIFIER OFF – gdy, identyfikatory nie mogą być w cudzysłowach i muszą być zgodne ze wszystkimi regułami języka T-SQL.

Uwaga: QUOTED_IDENTIFIER nie wpływa na rozdzielane identyfikatory w nawiasach ([]).

Aby wyświetlić bieżące ustawienia należy wykonać kod poniżej:

DECLARE @QUOTED_IDENTIFIER VARCHAR(3) = 'OFF';
IF ( (256 & @@OPTIONS) = 256 ) 
SET @QUOTED_IDENTIFIER = 'ON';

SELECT @QUOTED_IDENTIFIER AS QUOTED_IDENTIFIER;

Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl