set QUOTED_IDENTIFIER (Transact-SQL)
Neden SQL Server sınırlandırma tanımlayıcıları tırnak işareti ve ilgili ISO kurallarını izlemek içinharflerden oluşan dizeler.Çift tırnak işaretleri arasına sınırlandırılmış tanımlayıcıları olabilir ya da Transact-SQL ayrılmış anahtar sözcükleri veya değil genellikle tarafından izin verilen karakter içerebilir Transact-SQL sözdizimi kuralları tanımlayıcıları.
Sözdizimi
SET QUOTED_IDENTIFIER { ON | OFF }
Açıklamalar
set QUOTED_IDENTIFIER on olarak ayarlandığında çift tırnak tanımlayıcıları sınırlandırılabilir ve rakamları tek tırnak işaretleriyle ayrılmış olmalı.set QUOTED_IDENTIFIER kapalı olduğunda tanımlayıcıları teklif edemez ve tüm izlemeniz gereken Transact-SQL kuralları için tanımlayıcıları.Daha fazla bilgi için, bkz. Tanımlayıcıları.Değişmez değerler, tek veya çift tırnak içine sınırlandırılabilir.
set QUOTED_IDENTIFIER açık (varsayılan), çift tırnak işareti ayrılmış tüm dizeler nesne tanıtıcılar olarak yorumlanır.Bu nedenle, teklif edilen tanımlayıcıları izleyin gerekmez Transact-SQL kuralları için tanımlayıcıları.Ayrılmış anahtar sözcükleri olabilir ve genellikle değil izin verilen karakter içerebilir Transact-SQL tanımlayıcıları.Harflerden oluşan dize deyimleri sınırlandırmak için çift tırnak işareti kullanılamaz; içine harflerden oluşan dizeler tek tırnak işaretleri kullanılmalıdır.Tek tırnak işareti, (') bir parçasıdır hazır bilgi dize, bu iki tek tırnak işareti temsil edilebilir (").Ayrılmış anahtar sözcükleri veritabanında nesne adları için kullanıldığında, set QUOTED_IDENTIFIER on olması gerekir.
set QUOTED_IDENTIFIER kapalı olduğunda, ifadelerde harflerden oluşan dizeler tek veya çift tırnak içine sınırlandırılabilir.Bir dize çift tırnak işaretleri arasına sınırlanmış ise, dize kesme gibi katıştırılmış tek tırnak işaretleri içerebilir.
Oluştururken veya dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler değiştirme set QUOTED_IDENTIFIER on olması gerekir.Dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler ile tablolar oluşturma, update, INSERT ve delete deyimlerini, set QUOTED_IDENTIFIER kapalı ise, başarısız olur."Değerlendirmeleri yaparken, kullanım AYARLAMAK Statements" hesaplanan sütunlar üzerinde dizin oluşturulmuş görünümler ve dizinler ile gerekli set seçenek ayarları hakkında daha fazla bilgi için bkz: in set seçenekleri (Transact-SQL).
SQL Server Yerel istemci odbc sürücüsü ve SQL Server yerel istemci ole DB sağlayıcısı için SQL Server otomatik olarak küme QUOTED_IDENTIFIER bağlanırken açık.Bu odbc veri kaynaklarında, odbc bağlantı öznitelikleri ya da ole DB bağlantı özellikleri de yapılandırılabilir.DByapılan bağlantılar için varsayılan set QUOTED_IDENTIFIER kapalı'dır-kitaplık uygulamaları.
Bir tablo oluşturduğunuzda, tablo oluşturulduğunda seçeneği off için küme olsa bile, tırnak içine alınmış TANIMLAYICI seçeneği her zaman on tablo meta veriler verilerde depolanır.
saklı yordam oluşturulduğunda, set QUOTED_IDENTIFIER ve set ANSI_NULLS ayarlarını yakalanan ve bu saklı yordamsonraki çağırmaları için kullanılır.
İçinde saklı yordamçalıştırıldığında, set QUOTED_IDENTIFIER ayarı değiştirilmez.
set ANSI_DEFAULTS on olarak ayarlandığında, set QUOTED_IDENTIFIER etkinleştirilir.
set QUOTED_IDENTIFIER da 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.
set QUOTED_IDENTIFIER ayrıştırma saat küme olur.Ayrıştırma saat ayarı, set deyim toplu iş ya da saklı yordamvarsa, onu olup kod yürütülmesine o noktadan gerçekten ulaştığında olsun etkili olur anlamına gelir; ve herhangi deyimleri çalıştırılır önce set deyim etkinleşir.
Köşeli parantez kullanarak ve [], tanımlayıcılar sınırlandırmak için QUOTED_IDENTIFIER ayarı tarafından etkilenmez.
İzinler
Üyelik gerektiren public rolü.
Örnekler
A.tırnak işaretli tanımlayıcı ayarı ve özel amaçlı sözcüğünü nesne adları kullanma
Aşağıdaki örnekte gösterildiği SET QUOTED_IDENTIFIER ayarı olmalıdır ON, ve anahtar sözcükleri tablo adları çift anahtar adları. rezerve nesneleri 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ı ile tek ve çift tırnak işaretleri kullanma
Aşağıdaki örnek biçimini tek gösterir ve çift tırnak içinde dize ifadelerle kullanılan SET QUOTED_IDENTIFIER küme ON ve 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
Sonuç kümesi buradadır.
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
Ayrıca bkz.