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;