SET Options İle Oluşturulan SQL Server Nesneleri Kategori: Performans Set seçenekleri nelerdir? SQL Server geriye dönük uyumluluk SET seçenekleri, yeni geliştirme için ISO SQL standartlarını desteklerken eski T-SQL kodunun daha yeni SQL Server sürümlerinde değişiklik olmadan çalışmasına izin verir. Kısaca, ISO dışı davranış bekleyen uygulamaların bozulmasını önlerler. Bunu neden önemsemelisiniz? Nesnelerin içinde kullanılan tablolara filtre…
Kategori: Performans
Set seçenekleri nelerdir?
SQL Server geriye dönük uyumluluk SET seçenekleri, yeni geliştirme için ISO SQL standartlarını desteklerken eski T-SQL kodunun daha yeni SQL Server sürümlerinde değişiklik olmadan çalışmasına izin verir.
Kısaca, ISO dışı davranış bekleyen uygulamaların bozulmasını önlerler.
Bunu neden önemsemelisiniz?
Nesnelerin içinde kullanılan tablolara filtre uygulanmış bir dizin, dizinlenmiş görünümler veya diğer gelişmiş özellikler eklemek istediğinizde, bu ayarlar KAPALI olarak nesne oluşturulması önerilmez, bunlar sorunlara neden olur.
Set seçenekleriyle SQL Server nesneleri nasıl bulunur?
Aşağıdaki sorguyu kullanarak QUOTED_IDENTIFIER veya ANSI_NULLS OFF olan nesneleri bulabilirsiniz.
SELECT OBJECT_SCHEMA_NAME(o.object_id) AS SchemaName
,OBJECT_NAME(o.object_id) AS ObjectName
,o.type_desc AS ObjectType
FROM sys.objects AS o
WHERE
0 IN( OBJECTPROPERTY(o.object_id, ‘ExecIsQuotedIdentOn’),
OBJECTPROPERTY(o.object_id, ‘ExecIsAnsiNullsOn’))
Aşağıdaki sorguyu kullanarak ANSI_PADDING OFF ile Varchar(n)/varbinary(n) sütunlarını bulabilirsiniz.
SELECT OBJECT_SCHEMA_NAME(t.object_id) AS SchemaName
,OBJECT_NAME(t.object_id) AS ObjectName
,c.name AS ColumnName
FROM sys.tables AS t
JOIN sys.columns AS c ON c.object_id = t.object_id
JOIN sys.types AS ty ON ty.system_type_id = c.system_type_id AND ty.user_type_id = c.user_type_id
WHERE c.is_ansi_padded = 0
AND ((ty.name IN (‘varbinary’,’varchar’) AND c.max_length <> -1)
OR (ty.name IN (‘binary’,’char’) AND c.is_nullable = 1))
Onları nasıl düzeltebiliriz?
1. Kalıcı KAPALI ayarını AÇIK olarak değiştirmek için QUOTED_IDENTIFER ve ANSI_NULLS AÇIK olan bir oturumdan nesneyi yeniden oluşturun. DDL komut dosyalarını yürütürken oturum ayarının AÇIK olduğundan emin olun.
2. Kalıcı bir sütun ANSI_PADDING ayarını KAPALI’dan AÇIK’a değiştirmek için, ANSI_PADDING AÇIK oturumundan ALTER TABLE…ALTER COLUMN öğesini çalıştırın (mevcut sütunla aynı tanımı belirtin).
Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!