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.
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
Zobacz także