Aracılığıyla paylaş


Sistem Uyumluluğu Görünümleri (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ı

SQL Server'ın önceki sürümlerinden birçok sistem tablosu artık bir görünüm kümesi olarak uygulanmıştır. Bu görünümler uyumluluk görünümleri olarak bilinir ve yalnızca geriye doğru uyumluluk için tasarlanmıştır. Uyumluluk görünümleri, SQL Server 2000 (8.x)'de mevcut olan aynı meta verileri ortaya çıkarır. Ancak, uyumluluk görünümleri, SQL Server 2005 (9.x) ve sonrasında tanıtılan özelliklerle ilgili meta verileri ortaya çıkarmaz. Bu nedenle, Service Broker veya bölümleme gibi yeni özellikleri kullandığınızda, katalog görünümlerini kullanmaya geçmeniz gerekir.

Katalog görünümlerine yükseltmenin bir diğer nedeni, kullanıcı kimlikleri ve tür kimliklerini depolayan uyumluluk görünüm sütunlarının NULL döndürebileceği veya aritmetik taşmaları tetikleyebilmesidir. Bunun nedeni, 32.767'den fazla kullanıcı, grup ve rol ile 32.767 veri türü oluşturabilmenizdir. Örneğin, 32.768 kullanıcı oluşturup ardından aşağıdaki sorguyu çalıştırırsanız: SELECT * FROM sys.sysusers. ARITHABORT ON olarak ayarlanmışsa, sorgu aritmetik taşma hatası ile başarısız olur. ARITHABORT OFF olarak ayarlanmışsa, uid sütunu NULL döner.

Bu sorunları önlemek için, artan kullanıcı ve tip kimliği sayısını yönetebilen yeni katalog görünümlerini kullanmanızı öneririz. Aşağıdaki tablo, bu taşmaya maruz kalan sütunları listeler.

Sütun adı Uyumluluk görünümü SQL Server 2005 görünümü
xusertype syscolumns sys.columns
usertype syscolumns sys.columns
Memberuid Sistem üyeleri sys.database_role_members
Groupuid Sistem üyeleri sys.database_role_members
Uıd sysobjects sys.objects
Uıd sysprotect sys.database_permissions

sys.server_permissions
Grantor sysprotect sys.database_permissions

sys.server_permissions
xusertype Sistem tipleri sys.types
Uıd Sistem tipleri sys.types
Uıd sysusers sys.database_principals
Altuid sysusers sys.database_principals
Gıd sysusers sys.database_principals
Uıd syscacheobjects sys.dm_exec_plan_attributes
Uıd sysprocesses sys.dm_exec_requests

Bir kullanıcı veritabanında referans verildiğinde, SQL Server 2000'de kullanımdan kaldırıldığı açıklanan sistem tabloları ( örneğin syslanguages veya syscacheobjects) artık sistem şemasında geri uyumluluk görünümüne bağlıdır. SQL Server 2000 sistem tabloları birden fazla sürüm için kullanımdan kaldırıldığı için bu değişiklik bir bozucu değişiklik olarak kabul edilmez.

Örnek: Bir kullanıcı, SQL Server 2008'de bir kullanıcı veritabanında syslanguages adı verilen bir kullanıcı tablosu oluşturuysa, o veritabanındaki ifade SELECT * from dbo.syslanguages; kullanıcı tablosundan değerleri döndürür. SQL Server 2012'den itibaren, bu uygulama sistem görünümünden sys.syslanguages verilerini geri döndürecektir.

Ayrıca Bkz.

Katalog Görünümleri (Transact-SQL)
Sistem Tablolarını Sistem Görünümlerine Eşleme (Transact-SQL)