Aracılığıyla paylaş


SET İfadeleri (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Transact-SQL programlama dili, belirli bilgilerin mevcut oturum yönetimini değiştiren birkaç SET ifadesi sağlar. SET ifadeleri, aşağıdaki tabloda gösterilen kategorilere göre gruplandırılmıştır.

SET ifadesiyle yerel değişkenleri ayarlama hakkında bilgi için bkz.SET @local_variable (Transact-SQL)

Kategori Statements
Tarih ve saat ifadeleri ÖNCE TARIH BELIRLENİN.

TARIH FORMATINI AYARLAMA
Kilitleme ifadeleri SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Çeşitli deyimler SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET DILI

SET OFSETLERI

SET QUOTED_IDENTIFIER
Sorgu Yürütme İcmaları ARITHABORT SETI

SET ARITHIGNORE

SET FMTONLY
Not: Bu özellik, SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.

NOCOUNT KUR

NOEXEC SETI

SET NUMERIC_ROUNDABORT

AYIRMA AYARI

SET QUERY_GOVERNOR_COST_LIMIT

SET SONUÇ KÜMESI ÖNBELLEKLEME (Önizleme)
Not: Bu özellik yalnızca Azure Synapse Analytics için geçerlidir.

ROWCOUNT BELİRLE

METİN BOYUTUNU AYARLA
ISO Ayarları ifadeleri SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
İstatistik açıklamaları FORCEPLAN KUR

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

İSTATISTIKLER IO

STATISTIKLERİ XML OLARAK AYARLA

İSTATİSTİK PROFİLİNİ AYARLA

İSTATISTIK ZAMANI BELIRLENDI
İşlem beyanları SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

İŞLEM YALITIM DÜZEYİNİ AYARLAMA

SET XACT_ABORT

SET ifadelerini kullanırken dikkate alınanlar

  • Tüm SET ifadeleri yürütme veya çalışma zamanında çalışır, ancak bu ifadeler ayrıştırma zamanında çalışır:

    • SET FIPS_FLAGGER
    • SET OFSETLERI
    • AYRıŞTıRMA OLARAK AYARLA
    • ve SET QUOTED_IDENTIFIER
  • Bir SET ifadesi bir saklanan prosedür veya tetikleyicide çalışıyorsa, SET seçeneğinin değeri depolanmış prosedür veya tetikleyici kontrolü geri getirdikten sonra geri gelir. Ayrıca, dinamik SQL dizesinde sp_executesql veya EXECUTE kullanılarak çalışan bir SET ifadesi belirtirseniz, dinamik SQL dizisinde belirttiğiniz batch'ten kontrol geri döndükten sonra SET seçeneğinin değeri geri yüklenir.

  • Saklanan prosedürler, SET ANSI_NULLS ve SET QUOTED_IDENTIFIER hariç çalıştırma zamanında belirtilen SET ayarlarıyla çalıştırılır. SET ANSI_NULLS veya SET belirten saklanan prosedürler, QUOTED_IDENTIFIER saklanan prosedür oluşturma zamanında belirtilen ayarı kullanır. Eğer bir dosyalanmış prosedür içinde kullanılırsa, herhangi bir SET ayarı göz ardı edilir.

  • sp_configurekullanıcı seçenekleri ayarı sunucu çapında ayarlar sağlar ve birden fazla veritabanında çalışır. Bu ayar ayrıca açık bir SET ifadesi gibi davranır, ancak giriş zamanında gerçekleşir.

  • ALTER DATABASE kullanılarak belirlenen veritabanı ayarları yalnızca veritabanı seviyesinde geçerlidir ve yalnızca açıkça ayarlandığında geçerlidir. Veritabanı ayarları, sp_configure kullanılarak belirlenen örnek seçenekleri ayarlarını geçersiz kılar.

  • Bir SET ifadesi ON ve OFF kullanıyorsa, birden fazla SET seçeneği için her ikisini de belirtebilirsiniz.

    Uyarı

    Bu, istatistiklerle ilgili SET seçenekleri için geçerli değildir.

    Örneğin, SET QUOTED_IDENTIFIER, ANSI_NULLS ON hem QUOTED_IDENTIFIER hem de ANSI_NULLS'yi ON'a ayarlar.

  • SET ifadesi ayarları, ALTER DATABASE kullanılarak belirlenen aynı veritabanı seçeneği ayarlarını geçersiz kılar. Örneğin, bir SET ANSI_NULLS ifadesinde belirtilen değer, ANSI_NULLs için veritabanı ayarını geçersiz kılar. Ayrıca, bazı bağlantı ayarları, bir kullanıcı veritabanına bağlandığında, sp_configure kullanıcı seçenekleri ayarının önceki kullanımıyla veya tüm ODBC ve OLE/DB bağlantılarına uygulanan değerlere göre otomatik olarak ONAYLANIR.

  • ALTER, CREATE ve DROP DATABASE ifadeleri SET LOCK_TIMEOUT ayarını tanımıyor.

  • Bir genel veya kısayol SET ifadesi birkaç ayar belirlediğinde, kısayol SET ifadesi vermek, kısayol SET ilesinin etkilediği tüm seçenekler için önceki ayarları sıfırlar. Kısayol SET ifadesinden etkilenen bir SET seçeneği, kısayol SET ifadesi verildikten sonra ayarlanırsa, bireysel SET ifadesi karşılaştırılabilir kısayol ayarlarını geçersiz kılar. Bir kısayol SET ifadesi örneği olarak SET ANSI_DEFAULTS.

  • Toplu çalışmalar kullanıldığında, veritabanı bağlamı, USE ifadesi kullanılarak oluşturulan toplu tarafından belirlenir. Planlanmamış sorgular ve depolanan prosedürün dışında çalışan ve toplu olarak bulunan tüm diğer ilemeler, veritabanının seçenek ayarlarını ve USE ifadesi tarafından oluşturulan bağlantıyı devralır.

  • Birden fazla Aktif Sonuç Seti (MARS) isteği, en güncel oturum SET seçenek ayarlarını içeren küresel bir durumu paylaşır. Her istek çalıştırıldığında, SET seçeneklerini değiştirebilir. Değişiklikler, ayarlandıkları istek bağlamına özgüdür ve diğer eşzamanlı MARS taleplerini etkilemez. Ancak, istek yürütme tamamlandıktan sonra, yeni SET seçenekleri küresel oturum durumuna kopyalanır. Bu değişiklikten sonra aynı oturumda yürütülen yeni istekler, bu yeni SET seçenek ayarlarını kullanacaktır.

  • Bir depolanmış prosedür bir toplu veya başka bir depolanmış prosedürden çalıştırıldığında, veritabanında ayarlanmış seçenek değerleri altında çalıştırılır. Örneğin, saklanan prosedür db1.dbo.sp1 depolanmış prosedür db2.dbo.sp2 çağrısı yaptığında, depolanmış prosedür sp1 veritabanı db1'in mevcut uyumluluk seviyesi ayarı altında çalıştırılır ve depolanmış prosedür sp2 veritabanı db2'nin mevcut uyumluluk seviyesi ayarı altında çalıştırılır.

  • Bir Transact-SQL ifadesi birden fazla veritabanında bulunan nesneleri ele aldığında, mevcut veritabanı bağlamı ve mevcut bağlantı bağlamı o ifadeye uygulanır. Bu durumda, Transact-SQL ifade bir toplu haldeyse, mevcut bağlantı bağlamı USE ifadesi tarafından tanımlanan veritabanıdır; Eğer Transact-SQL ifadesi bir depolanmış prosedürdeyse, bağlantı bağlamı saklanan prosedürü içeren veritabanıdır.

  • Hesaplanan sütunlarda veya indekslenmiş görünümlerde indeksler oluştururken ve manipüle ederken, bu SET seçeneklerini ON'a ayarlamalısınız: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING ve ANSI_WARNINGS. NUMERIC_ROUNDABORT seçeneğini KAPALI olarak ayarlayın.

    Bu seçeneklerden herhangi birini gerekli değerlere ayarlamazsanız, INSERT, UPDATE, DELETE, DBCC CHECKDB ve DBCC CHECKTABLE işlemleri indekslenmiş görünümlerde veya hesaplanan sütunlarda indeksli tablolarda başarısız olur. SQL Server, yanlış ayarlanmış tüm seçenekleri listeleyen bir hata oluşturur. Ayrıca, SQL Server bu tablolarda veya indekslenmiş görünümlerde SELECT ifadelerini, hesaplanan sütunlardaki veya görünümlerdeki indeksler yokmuş gibi işliyor.

  • SET RESULT_SET_CACHING AÇIKSA, mevcut istemci oturumu için sonuç önbellek özelliğini etkinleştirir. Result_set_caching veritabanı seviyesinde kapalıysa oturum için AÇILAMAZ. SET RESULT_SET_CACHING KAPALI olduğunda, mevcut istemci oturumu için sonuç kümesi önbellekleme özelliği devre dışı bırakılır. Bu ayarı değiştirmek için kamu rolünde üyelik gereklidir. Apply to: Azure Synapse Analytics Gen2