küme QUOTED_IDENTIFIER (Transact-SQL)

Neden oluyor SQL Server ISO kurallarına sınırlandırma tanımlayıcıları tırnak işareti ve harflerden oluşan dizeler için . Çift tırnak işaretleriyle ayrılmış tanımlayıcı da olabilir. Transact-SQL anahtar sözcükler ayrılmış veya değil genellikle tarafından izin verilen karakter içerebilir Transact-SQL tanımlayıcılar için sözdizimi kuralları.

Topic link iconTransact-SQL sözdizimi kuralları

SET QUOTED_IDENTIFIER { ON | OFF }

Remarks

küme QUOTED_IDENTIFIER ON, çift tırnak tanımlayıcıları ayrılmış ve hazır tek tırnak işareti ayrılmış.küme QUOTED_IDENTIFIER KAPALı olduğunda, tanımlayıcıları tırnaklı edemez ve tüm gelmelidir Transact-SQL tanımlayıcılar için kuralları. Daha fazla bilgi için bkz:Tanımlayıcılar.Harfleri tek veya çift tırnak içine sınırlandırılabilir.

küme QUOTED_IDENTIFIER (varsayılan), tüm dizeler çift tırnak işaretleriyle ayrılmış nesne tanımlayıcıları yorumlanır.Bu nedenle, teklif edilen tanımlayıcıları izleyin gerekmez Transact-SQL tanımlayıcılar için kuralları. Ayrılmış anahtar sözcükleri olabilir ve genellikle olmayan izin verilen karakter içerebilir Transact-SQL tanımlayıcılar. Harflerden oluşan dize ve deyimleri sınırlandırmak için çift tırnak işareti kullanılamaz; harflerden oluşan dizeler içine tek tırnak işaretleri kullanılmalıdır.Tek bir tırnak () işaretlerseniz**') Bölümü hazır bilgi dizesi, bu iki tek tırnak işaretleri ( temsil edilebilir"**).Veritabanındaki, nesne adları için ayrılmış anahtar kullanıldığında, küme QUOTED_IDENTIFIER ON olmalıdır.

küme QUOTED_IDENTIFIER KAPALı olduğunda, ifadelerde harflerden oluşan dizeler tek veya çift tırnak içine sınırlandırılabilir.Dize hazır bilgi dizesi, çift tırnak işaretleri arasına sınırlanmıştır, kesme gibi katıştırılmış tek tırnak işaretleri içerir.

Oluştururken veya hesaplanmış sütunları ya da dizin oluşturulmuş görünümler dizinleri değiştirmek için küme QUOTED_IDENTIFIER ON olması gerekir.küme QUOTED_IDENTIFIER KAPALı'dır, dizinleriyle hesaplanan sütunlar veya dizin oluşturulmuş görünümler tabloları CREATE, UPDATE, INSERT ve DELETE deyimlerini başarısız olur.Hesaplanmış bir sütun üzerinde dizin oluşturulmuş görünümler ve dizinler gerekli küme seçenek ayarları hakkında daha fazla bilgi için "Konuları, size kullan küme Statements" konusuna bakın. küme (Transact-SQL).

The SQL Server Native istemci ODBC driver and SQL Server Native istemci OLE DB sağlayıcı for SQL Server automatically küme QUOTED_IDENTIFIER to ON when connecting. ODBC veri kaynaklarına bağlantı özniteliklerini ODBC veya OLE DB bağlantı özellikleri de yapılandırılabilir.küme QUOTED_IDENTIFIER için KAPALı DB-Library uygulamalardan gelen bağlantılar için varsayılandır.

Bir tablo oluşturduğunuzda, tablo oluşturulduğunda seçeneği KAPALı olarak küme olsa bile tırnak içine ALıNMıŞ TANıMLAYıCı seçeneği her zaman AÇıK tablonun meta verilerde depolanır.

Saklı yordam oluşturulduğunda, küme QUOTED_IDENTIFIER ve küme ANSI_NULLS ayarları yakalanan ve sonraki etkinleştirilmelerinde Bu saklı yordam için kullanılır.

Içinde çalıştırıldığında bir saklı yordam, küme QUOTED_IDENTIFIER ayarını değişmez.

küme ANSI_DEFAULTS AÇıK olduğunda, küme QUOTED_IDENTIFIER etkinleştirilir.

küme QUOTED_IDENTIFIER de ALTER DATABASE QUOTED_IDENTIFER ayarına karşılık gelir.Veritabanı ayarları hakkında daha fazla bilgi için bkz: ALTER DATABASE Transact-SQL) ve Veritabanı seçeneklerini ayarlama.

küme QUOTED_IDENTIFIER ayrıştırma saat küme.Ayrıştırma saat ayarı küme deyim toplu iş iş işleme varsa veya saklı yordamını, kod yürütülmesine; bu noktadan gerçekten eriştiği olup olmadığına bakılmaksızın, etkili ve tüm ifadeleri yürütülen önce küme deyim etkili anlamına gelir.

İzinler

Üyelik gerektirir Ortak roldür.

Örnekler

C.tırnak işaretli tanımlayıcı ayarı ve özel amaçlı sözcüğünü nesne adları'nı kullanma

Aşağıdaki örnek, gösterir SET QUOTED_IDENTIFIER ayarı ON, anahtar sözcükleri tablo adları çift anahtar adları, rezerve edilmiş bir nesne oluşturmak için tırnak içinde olmalıdır.

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.tırnak işaretli tanımlayıcı ayarı tek ve çift tırnak işaretleri kullanma

Aşağıdaki örnek, ile dize deyimlerde kullanılan tek ve çift tırnak işareti biçimini gösterir. SET QUOTED_IDENTIFIER ayarlamak ON ve 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