Kullanıcı şeması ayrımı

İçinde şemaları davranışını değiştirmiş SQL Server 2005.Şemalar veritabanı kullanıcıları artık eşdeğerdir; Her şema oluşturulan veritabanı kullanıcının bağımsız olarak var olan farklı bir ad alanı sunulmuştur.Başka bir deyişle, bir şema basitçe olan bir kapsayıcı nesneler.Bir şema herhangi bir kullanıcı tarafından sahip olunan ve sahipliğini transfer edilebilir.

Yeni davranış

Sahiplik ayrımı şemaları gelen önemli sonuçları vardır:

  • Şemaları ve güvenli hale Getirilebilenler kapsamlı şema sahipliğini transfer edilebilir.Daha fazla bilgi için bkz: alter YETKİLENDİRME (Transact-sql).

  • Nesneleri şemalar arasında taşınabilir.Daha fazla bilgi için bkz: alter schema (Transact-sql).

  • Tek bir şema nesneleri birden çok veritabanı kullanıcı tarafından sahip olunan içerebilir.

  • Birden çok veritabanı kullanıcılarını tek bir varsayılan şemayı paylaşabilir.

  • Şemaları ve şema içerdiği güvenli hale Getirilebilenler izinlerini önceki sürümlerde daha büyük duyarlılık ile yönetilebilir.Daha fazla bilgi için bkz: Şeması izinleri (Transact-sql) ve Nesne izinleri (Transact-sql).

  • Bir şema herhangi bir veritabanı asıl ait olabilir.Bu rolleri ve uygulama rolleri içerir.

  • Bir veritabanı kullanıcısı içinde karşılık gelen şema nesneleri bırakarak olmadan silinebilir.

  • Daha önceki sürümleri için yazılmış kod SQL Server döndürebilir hatalı sonuçlar, kod varsayar, şemalar eşdeğerdir veritabanı kullanıcıları.

  • Katalog görünümleri daha önceki sürümleri için tasarlanmış SQL Server döndürebilir yanlış sonuçlar.Bu sysobjects.

  • Nesne sahibi olarak bir geçerli etki alanı sorumlusu (kullanıcı veya grup) belirtirseniz, bir veritabanı nesnesi oluştururken, etki alanı sorumlusu bir şema veritabanına eklenir.Bu etki alanı sorumlusu tarafından yeni şema sahibi.

Yeni katalog görünümleri

İle başlayan SQL Server 2005, şemalar açık varlıklara meta veriler; yansıtılan ve sonuç olarak, şemaları yalnızca bir sahip olabilir ancak tek bir kullanıcı birçok şemaları sahip olabileceği.Bu karmaşık ilişki içinde yansıtılmaz SQL Server 2000 Sistem tabloları, bunu SQL Server 2005 tanıtılan yeni katalog görünümleri, hangi doğru yansıtacak yeni bir meta veriler.

Aşağıdaki arasındaki eşlemeyi gösterir tablo SQL Server 2000 sistem tabloları ve eşdeğer SQL Server 2005 ve daha sonra katalog görünümleri.

sql Server 2000 sistemtablo

sql Server 2005 ve daha sonra Katalog görünümü

sysusers

sys.database_principals

sys.schemas

syslogins

sys.server_principals

SQL Server 2005 250'den fazla yeni katalog görünümleri kullanılmaya başlandı.Erişim için yeni katalog görünümleri kullanmak öneririz meta veriler.Daha fazla bilgi için bkz: Katalog Görünümleri (Transact-sql).

Yeni ddl deyimleri sistemine karmaşıklık tanıtmak meta veriler , doğru olarak uygulanmıyor eski katalog görünümleri gibi sysobjects.Aşağıdaki örnekte, kullanıcı kimliği ve şema adı ile döndürülen sysobjects eşit, ve kullanıcı ve şema içinde sunulan arasındaki ayırım yansıtacak SQL Server 2005.

USE tempdb
GO
CREATE LOGIN u1 WITH PASSWORD = 'Mdfjd$sakj943857l7sdfh##30'
CREATE USER u1 WITH DEFAULT_SCHEMA = u1
GO
GRANT CREATE TABLE to u1 
GO
CREATE SCHEMA sch1
GO
CREATE SCHEMA u1 AUTHORIZATION u1
GO
EXECUTE AS user = 'u1'
GO
CREATE TABLE t1(c1 int)
GO
revert
GO
SELECT user_name(uid) , * FROM sysobjects WHERE name = 't1'
GO
Dikkat notuDikkat

Yeni katalog görünümleri, herhangi bir veritabanı içinde aşağıdaki ddl ifadelerden birini bugüne kadar kullanılmıştı kullanmanız gerekir: OLUŞTURMA/ALTER/DROP SCHEMA; KULLANICI OLUŞTURMA/ALTER/DROP; OLUŞTURMA/ALTER/DROP ROLÜ; OLUŞTURMA/ALTER/DROP APPROLE; ALTER YETKİLENDİRME.

Varsayılan şemaları

Tam adları güvenli hale Getirilebilenler adlarını çözmek için SQL Server 2000 arayan veritabanı kullanıcı sahibi şema ve sahibi şema denetlemek için ad çözümlemesini kullanır dbo.

İle başlayan SQL Server 2005, her kullanıcının bir varsayılan şema.Varsayılan şema olabilir küme ve create user veya alter user default_schema seçeneği kullanılarak değiştirilebilir.default_schema bırakılırsa undefined, veritabanı kullanıcısı olacak dbo olarak kendi varsayılan şema.