zestaw QUOTED_IDENTIFIER (języka Transact-SQL)

Powoduje, że SQL Server wykonanie reguły ISO dotyczące identyfikatorów ogranicznika cudzysłów i literałów ciągów. Identyfikatory rozdzielane w podwójne cudzysłowy mogą być Transact-SQL zarezerwowane słów kluczowych lub może zawierać znaki, które nie jest ogólnie dozwolone przez Transact-SQL reguły składni identyfikatorów.

Topic link iconKonwencje składni języka Transact-SQL

SET QUOTED_IDENTIFIER { ON | OFF }

Remarks

zestaw QUOTED_IDENTIFIER jest włączone, można ograniczać identyfikatorów w podwójne cudzysłowy i literały muszą być rozdzielone w pojedynczy cudzysłów.Gdy QUOTED_IDENTIFIER zestaw jest wyłączona, identyfikatorów nie może być umieszczony w cudzysłowie i muszą być zgodne ze wszystkich Transact-SQL reguły dla identyfikatorów. Aby uzyskać więcej informacji zobaczIdentyfikatory.Literały mogą być rozdzielone pojedynczy lub podwójny cudzysłów.

Gdy QUOTED_IDENTIFIER zestaw jest ON (ustawienie domyślne), wszystkie ciągi rozdzielane w podwójne cudzysłowy są interpretowane jako identyfikatory obiektów.W związku z tym, identyfikatorów w cudzysłowach nie trzeba wykonać Transact-SQL reguły dla identyfikatorów. Mogą one zastrzeżonych słów kluczowych oraz może zawierać znaki, które zazwyczaj nie są dozwolone w Transact-SQL identyfikatory. Podwójny cudzysłów nie mogą być używane do ograniczania wyrażeń literałem ciąg znaków; pojedyncze cudzysłowy muszą być używane ciągów literalnych, należy ująć.Jeśli oferty pojedynczego znaku ()") jest elementem literału ciąg, może być reprezentowany przez dwa znaki pojedynczego cudzysłowu (").zestaw QUOTED_IDENTIFIER muszą być włączone, gdy zastrzeżonych słów kluczowych są używane dla nazw obiektów w bazie danych.

Gdy QUOTED_IDENTIFIER zestaw jest wyłączona, ciągów literalnych w wyrażeniach można ograniczać w pojedyncze lub podwójne cudzysłowy.Jeśli literał ciągu znaków jest ograniczony w podwójne cudzysłowy, ciąg może zawierać osadzony pojedynczy cudzysłów, na przykład apostrofy.

zestaw QUOTED_IDENTIFIER musi być włączone, podczas tworzenia lub zmieniania indeksów dla kolumny obliczanej lub widoków indeksowanych.zestaw QUOTED_IDENTIFIER jest wyłączona, nie będzie instrukcji CREATE, UPDATE, INSERT i DELETE na tabelach z indeksów dla kolumny obliczanej lub widoków indeksowanych.Aby uzyskać więcej informacji dotyczących wymaganych ustawień opcji zestaw z widoków indeksowanych i indeksów na kolumny obliczane zobacz "Zagadnienia podczas podczas Użyj zestaw deklaracji" w SET (Transact-SQL).

The SQL Server Native klient ODBC driver and SQL Server Native klient OLE DB dostawca for SQL Server automatically zestaw QUOTED_IDENTIFIER to ON when connecting. Można również skonfigurować w źródeł danych ODBC, atrybuty połączenia ODBC lub OLE DB właściwości połączenia.Domyślną wartością QUOTED_IDENTIFIER zestaw jest wyłączona dla połączeń z biblioteki DB aplikacji.

Podczas tworzenia tabela IDENTIFIER PODANA opcja jest zawsze przechowywane jako ON metadane w tabela nawet wtedy, gdy opcja ta zestaw do OFF podczas tworzenia tabela.

Po utworzeniu procedura przechowywana, ustawienia zestaw QUOTED_IDENTIFIER i zestaw ANSI_NULLS są przechwytywane i używane do kolejnego wywołania tej procedura przechowywana.

Gdy wykonywane wewnątrz procedura przechowywana, ustawienie zestaw QUOTED_IDENTIFIER nie ulega zmianie.

zestaw ANSI_DEFAULTS jest włączone, ma włączoną QUOTED_IDENTIFIER zestaw.

zestaw QUOTED_IDENTIFIER także odpowiada ustawieniu QUOTED_IDENTIFER ALTER DATABASE.Aby uzyskać więcej informacji na temat ustawień bazy danych zobacz ALTER DATABASE języka Transact-SQL) i Setting Database Options.

zestaw QUOTED_IDENTIFIER jest ustawiona na analizowanie czas.Ustawienie w czasie analizowania oznacza, że instrukcja zestaw znajduje się w tej instancji lub procedura przechowywana, on staje się skuteczne, niezależnie od tego, czy wykonywanie kodu faktycznie osiąga ten punkt; instrukcja zestaw działa przed wykonywane są wszystkie instrukcje.

Uprawnienia

Członkostwo w grupie wymaga publiczne roli.

Przykłady

A.Za pomocą słów zastrzeżonych nazw obiektów i ustawienie cytowany identyfikator

Poniższy przykład pokazuje, że SET QUOTED_IDENTIFIER ustawienie musi być ON, i słowa kluczowe w nazwach tabel muszą być ujęte w znaki podwójny cudzysłów do tworzenia i używania obiektów, które zostały zarezerwowane słowo kluczowe nazw.

SET QUOTED_IDENTIFIER OFF
GO
-- An attempt to create a table with a reserved keyword as a name
-- should fail.
CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL)
GO

SET QUOTED_IDENTIFIER ON
GO

-- Will succeed.
CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL)
GO

SELECT "identity","order" 
FROM "select"
ORDER BY "order"
GO

DROP TABLE "SELECT"
GO

SET QUOTED_IDENTIFIER OFF
GO

B.Przy użyciu ustawienia cytowany identyfikator w pojedyncze i podwójne cudzysłowy

W poniższym przykładzie przedstawiono sposób pojedyncze i podwójne cudzysłowy są używane w wyrażeniach ciąg z SET QUOTED_IDENTIFIER Ustaw wartość ON i OFF.

SET QUOTED_IDENTIFIER OFF
GO
USE AdventureWorks
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'Test')
   DROP TABLE dbo.Test
GO
USE AdventureWorks
CREATE TABLE dbo.Test (ID INT, String VARCHAR(30)) 
GO

-- Literal strings can be in single or double quotation marks.
INSERT INTO dbo.Test VALUES (1, "'Text in single quotes'")
INSERT INTO dbo.Test VALUES (2, '''Text in single quotes''')
INSERT INTO dbo.Test VALUES (3, 'Text with 2 '''' single quotes')
INSERT INTO dbo.Test VALUES (4, '"Text in double quotes"')
INSERT INTO dbo.Test VALUES (5, """Text in double quotes""")
INSERT INTO dbo.Test VALUES (6, "Text with 2 """" double quotes")
GO

SET QUOTED_IDENTIFIER ON
GO

-- Strings inside double quotation marks are now treated 
-- as object names, so they cannot be used for literals.
INSERT INTO dbo."Test" VALUES (7, 'Text with a single '' quote')
GO

-- Object identifiers do not have to be in double quotation marks
-- if they are not reserved keywords.
SELECT ID, String 
FROM dbo.Test;
GO

DROP TABLE dbo.Test;
GO

SET QUOTED_IDENTIFIER OFF;
GO

Here is the result set.

ID          String                         
----------- ------------------------------ 
1           'Text in single quotes'        
2           'Text in single quotes'        
3           Text with 2 '' single quotes   
4           "Text in double quotes"        
5           "Text in double quotes"        
6           Text with 2 "" double quotes   
7           Text with a single ' quote