set QUOTED_IDENTIFIER (Transact-sql)

Neden SQL ServerISO kuralları tırnak işareti sınırlandırma tanımlayıcıları ve harflerden oluşan dizeler ile ilgili izlenecek. Çift tırnak içine sınırlandırılmış tanımlayıcıları-ebilmek var olmak ya da Transact-SQLayrılmış anahtar sözcükleri veya değil genellikle izin verilen karakter içerebilir Transact-SQLtanımlayıcıları sözdizimi kuralları.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

SET QUOTED_IDENTIFIER { ON | OFF }

Açıklamalar

set quoted_ıdentıfıer on olduğunda tanımlayıcıları çift tırnak içine sınırlandırılabilir ve rakamları tek tırnak işaretleriyle ayrılmış olmalıdır. set quoted_ıdentıfıer kapalı olduğunda tanımlayıcıları iktibas edilemez ve tüm izlemeniz gereken Transact-SQLtanımlayıcıları kuralları. Daha fazla bilgi için, bkz. Veritabanı tanımlayıcıları. Harflerin tek veya çift tırnak içine sınırlandırılabilir.

set quoted_ıdentıfıer (varsayılan) ise, çift tırnak işaretleri ile ayrılmış tüm dizeler nesne tanımlayıcı olarak yorumlanır. Bu nedenle, teklif edilen tanımlayıcıları takip gerekmez Transact-SQLtanımlayıcıları kuralları. Onlar ayrılmış anahtar sözcükleri olabilir ve değil genellikle izin karakterleri içerebilir Transact-SQLtanımlayıcıları. Çift tırnak, hazır bilgi dizesi ifadeleri sınırlandırmak için kullanılamaz; harflerden oluşan dizeler içine almak için çift tırnak işareti kullanılmalıdır. Eğer tek bir tırnak işareti (') bölümü hazır bilgi dizesi, 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_ıdentıfıer on olması gerekir.

set quoted_ıdentıfıer kapalı olduğunda, harflerden oluşan dizeler ifadelerde tek veya çift tırnak içine sınırlandırılabilir. Harflerden oluşan çift tırnak içine sınırlandırılmış türdeyse dize kesme gibi gömülü tek tırnak işaretleri içerebilir.

Oluşturma veya değiştirme dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler set quoted_ıdentıfıer on olması gerekir. set quoted_ıdentıfıer kapalı ise, Oluştur, Güncelleştir, Ekle ve Sil deyimlerinin tablolarda dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler ile başarısız olur. Hesaplanan sütunlar üzerinde gerekli set seçenek ayarları ile dizinleri ve dizin oluşturulmuş görünümler hakkında daha fazla bilgi için bkz: "Konuları ne zaman sen kullanma set deyimleri" in Deyimiyle (Transact-sql) bırak.

SQL ServerYerel istemci odbc sürücüsü ve SQL ServerYerel istemci ole db sağlayıcısı için SQL Serverotomatik olarak set quoted_ıdentıfıer on bağlanırken. Bu odbc veri kaynakları, odbc bağlantı öznitelikleri ya da ole db bağlantı özellikleri de yapılandırılabilir. set quoted_ıdentıfıer için off bağlantıları gelen db kitaplık uygulamaları için varsayılandır.

Bir tablo oluşturduğunuzda, tablo oluşturulduğunda için off seçeneği ayarlanmış olsa bile, tırnak içine alınmış TANIMLAYICI seçeneği her zaman on tablonun meta verilerde depolanır.

Saklı yordam oluşturulduğunda, set quoted_ıdentıfıer ve set ansı_nulls ayarlarını yakalanan ve bu saklı yordam sonraki etkinleştirilmelerinde için kullanılır.

İçinde saklı bir yordam çalıştırıldığında, set quoted_ıdentıfıer ayarı değiştirilmedi.

set quoted_ıdentıfıer, ANSI_DEFAULTS SET on olduğunda etkinleştirilir.

set quoted_ıdentıfıer da alter database quoted_ıdentıfıer ayarına karşılık gelir. Veritabanı ayarları hakkında daha fazla bilgi için bkz: alter veritabanı (Transact-sql).

set quoted_ıdentıfıer ayrıştırma saati ayarlanır. Ayarı ayrıştırma zaman set deyimi toplu iş veya saklı yordam içinde varsa, bunun etkisi ne olursa olsun, ister kod yürütülmesine aslında bu noktaya ulaşır, alır anlamına gelir; ve herhangi deyimleri çalıştırılır önce set deyimi etkinleşir.

Parantez kullanarak ve [], tanımlayıcılar sınırlandırmak için quoted_ıdentıfıer ayarı tarafından etkilenmez.

İzinler

Üyelik publicrolü.

Örnekler

A.Teklif edilen tanımlayıcı ayarı ve özel amaçlı sözcüğünü nesne adlarını kullanma

Aşağıdaki örnek gösteren SET QUOTED_IDENTIFIERayarı ON, ve anahtar sözcükleri tablo adları çift tırnak işaretleri içinde anahtar kelime adları rezerve nesneleri oluşturmak için olmalı.

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

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

Aşağıdaki örnek gösterir şekilde tek ve çift tırnak içinde dize ifadelerle kullanılan SET QUOTED_IDENTIFIERiçin ONve OFF.

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

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

Başvuru

Veritabanı (Transact-sql) oluştur

Varsayılan (Transact-sql) oluştur

procedure (Transact-sql) oluştur

CREATE RULE (Transact-SQL)

Tablo (Transact-sql) oluştur

CREATE TRIGGER (Transact-SQL)

CREATE VIEW (Transact-SQL)

Veri Türleri (Transact-SQL)

execute (Transact-sql)

select (Transact-sql)

Deyimiyle (Transact-sql) bırak

set ANSI_DEFAULTS (Transact-sql)

sp_rename (Transact-sql)