Udostępnij za pośrednictwem


ZESTAW QUOTED_IDENTIFIER (Transact-SQL)

Powoduje, że SQL Server z regułami ISO dotyczące identyfikatorów rozdzielającego cudzysłów i literałów ciągów.Identyfikatorów rozdzielone znaki cudzysłowu mogą być Transact-SQL zarezerwowane słowa kluczowe lub może zawierać znaków nie jest ogólnie dozwolone przez Transact-SQL reguły składni dla identyfikatorów.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SET QUOTED_IDENTIFIER { ON | OFF }

Uwagi

Gdy ustawienie QUOTED_IDENTIFIER jest włączone, identyfikatory mogą być rozdzielone podwójny cudzysłów i literały muszą być rozdzielone w znaki pojedynczego cudzysłowu.Gdy ustawienie QUOTED_IDENTIFIER jest wyłączona, identyfikatory nie mogą być notowane i należy wykonać wszystkie Transact-SQL zasady dotyczące identyfikatorów.Aby uzyskać więcej informacji, zobacz Identyfikatory.Literały mogą być rozdzielone pojedyncze lub podwójne cudzysłowy.

Gdy Ustaw QUOTED_IDENTIFIER jest włączone (domyślnie), wszystkie ciągi rozdzielane w podwójne cudzysłowy są interpretowane jako identyfikatory obiektów.Dlatego identyfikatorów w cudzysłowach nie trzeba wykonać Transact-SQL zasady dotyczące identyfikatorów.Mogą być zastrzeżone i może zawierać znaków nie jest ogólnie dozwolone w Transact-SQL identyfikatorów.Podwójny cudzysłów nie można używać do ograniczania wyrażeń literalnych ciąg ; należy ująć ciągi tekstowe muszą być używane znaki pojedynczego cudzysłowu.Jeśli pojedynczy cudzysłów (') jest częścią literał ciągmoże być reprezentowany przez dwa znaki pojedynczego cudzysłowu (").Ustaw QUOTED_IDENTIFIER musi być ON użyto zastrzeżonego słowa kluczowe nazw obiektów w bazie danych.

Gdy ustawienie QUOTED_IDENTIFIER jest wyłączona, ciągi tekstowe w wyrażeniach można rozdzielone pojedyncze lub podwójne cudzysłowy.Jeśli literał ciąg jest ograniczony przez podwójny cudzysłów, ciąg może zawierać osadzony pojedynczy cudzysłów, na przykład apostrofy.

Ustaw QUOTED_IDENTIFIER musi być ON podczas tworzenia lub zmieniania indeksów dla kolumny obliczanej lub widoki indeksowane.Jeśli ustawienie QUOTED_IDENTIFIER jest wyłączona, instrukcji CREATE, UPDATE, INSERT i DELETE na tabelach z indeksów dla kolumny obliczanej lub widoki indeksowane nie powiedzie się.Aby uzyskać więcej informacji o wymagane ustawienia opcji zestaw Widoki indeksowane i indeksy kolumny obliczane zobacz "Zagadnienia podczas możesz użycia zestawu sprawozdań" in ZESTAW instrukcji (Transact-SQL).

SQL Server Sterownika ODBC macierzystym klienta i SQL Server macierzystego klienta OLE DB Provider for SQL Server automatycznie zestaw QUOTED_IDENTIFIER on podczas łączenia.Można również skonfigurować w źródeł danych ODBC w atrybuty połączenia ODBC lub OLE DB właściwości połączenia.Domyślne ustawienie QUOTED_IDENTIFIER jest wyłączona dla połączeń z DB— aplikacje biblioteczne.

Podczas tworzenia tabela opcji Identyfikator podane jest zawsze przechowywane w sprawie w tabela metadane nawet wtedy, gdy opcja jest zestaw na wyłączone, podczas tworzenia tabela .

Po utworzeniu procedura składowana ustawienia zestawu QUOTED_IDENTIFIER i USTAWIĆ ANSI_NULLS są przechwytywane i używane do kolejne wywołania procedura składowana.

Wykonywane wewnątrz procedura składowana, ustawienie zestaw QUOTED_IDENTIFIER nie ulega zmianie.

Gdy ustawienie ANSI_DEFAULTS jest włączone, ustawienie QUOTED_IDENTIFIER jest włączone.

Ustaw QUOTED_IDENTIFIER odpowiada również ustawienie QUOTED_IDENTIFER ALTER DATABASE.Aby uzyskać więcej informacji na temat ustawień bazy danych, zobacz ALTER DATABASE (Transact-SQL) i Ustawianie opcji bazy danych.

Ustaw QUOTED_IDENTIFIER jest zestaw w analizy czas.Ustawienie w czas analizy, oznacza, że w przypadku obecnych w procedura składowana partia lub zestaw instrukcja ma wpływ niezależnie od tego, czy wykonanie kodu faktycznie osiąga punkt; i zestaw instrukcja staje się skuteczne przed instrukcje są wykonywane.

Za pomocą nawiasów, i [], aby ograniczyć identyfikatory nie dotyczy ustawienie QUOTED_IDENTIFIER.

Uprawnienia

Wymaga członkostwa w public rolę.

Przykłady

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

Poniższy przykład pokazuje, że SET QUOTED_IDENTIFIER musi być ON, a słowa kluczowe w nazwach tabela musi być w podwójny cudzysłów do tworzenia i korzystania z obiektów, które zostały zarezerwowane nazwy słowa kluczowego.

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

Poniższy przykład przedstawia sposób pojedynczy i znaki podwójnego cudzysłowu są używane w wyrażeniach ciąg z SET QUOTED_IDENTIFIER zestaw na ON i OFF.

SET QUOTED_IDENTIFIER OFF;
GO
USE AdventureWorks2008R2;
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'Test')
   DROP TABLE dbo.Test;
GO
USE AdventureWorks2008R2;
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

Oto zestaw wyników.

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