User-Schema Separation

Zachowanie schematów w zmienione SQL Server 2005. Schematy są już równoważne użytkowników bazy danych; każdego schematu jest teraz różne przestrzeń nazw występuje niezależnie od użytkownika bazy danych, który go utworzył.Innymi słowy schemat jest po prostu kontener obiektów.Schemat może być własnością każdy użytkownik i jego własności jest zbywalne.

Nowe zachowanie

Oddzielanie własność od schematów ma ważne konsekwencje:

  • Własność schematów i securables o zakresie schematu jest zbywalne.Aby uzyskać więcej informacji zobaczALTER AUTHORIZATION (Transact-SQL).

  • Obiekty można przenosić między schematów.Aby uzyskać więcej informacji zobaczALTER SCHEMA (Transact-SQL).

  • Jeden schemat może zawierać obiektów posiadanych przez wielu użytkowników bazy danych.

  • Wielu użytkowników bazy danych mogą współużytkować pojedynczy domyślnego schematu.

  • Uprawnienia dotyczące schematów i securables zawartych w schemacie mogą być zarządzane przy użyciu większej precyzji niż w starszych wersjach.Aby uzyskać więcej informacji zobacz GRANT Schema Permissions (Transact-SQL) i GRANT Object Permissions (Transact-SQL).

  • Właścicielem schematu może być dowolnym głównej bazy danych.Obejmuje to role i role aplikacji.

  • Użytkownik bazy danych może być odrzucone, bez upuszczanie obiektów w odpowiednich schematu.

  • Kod napisany dla starszej wersji programu SQL Server może zwracać nieprawidłowe wyniki, jeśli kod zakłada, że schematy są równoważne użytkowników bazy danych.

  • Katalogowanie widoków, zaprojektowanych dla wcześniejszych wersji programu SQL Server może zwracać nieprawidłowe wyniki. Dotyczy to także sysobjects.

Nowe widoki wykazu

Zaczyna się od SQL Server 2005, schematy są jednostkami jawne odzwierciedlane metadane; i w rezultacie schematów może mieć tylko jednego właściciela ale jeden użytkownik może posiadać wiele schematów. Ta relacja złożona nie jest uwzględniana w SQL Server 2000 tabele systemowe, tak SQL Server 2005 wprowadzono nowe widoki wykazu, która dokładnie odzwierciedlać nowe metadane.

Następujące tabela poniżej zawiera mapowanie między SQL Server 2000 tabele systemowe i równoważne SQL Server 2005 a później widoki wykazu.

tabela systemowa SQL Server 2000

SQL Server 2005 i nowszych widoku wykazu

Jednak przy użyciu instrukcja ALTER autoryzacja do zmiany własności można określić alternatywne właściciela.

sys.database_principals

sys.Schemas

sp_tables_info_rowset_64

sys.server_principals

SQL Server 2005 Wprowadzono więcej niż 250 nowych widoki wykazu.Firma Microsoft zdecydowanie zaleca się używać nowych widoki wykazu na dostęp do metadane.Aby uzyskać więcej informacji zobaczCatalog Views (Transact-SQL).

Nowe instrukcje DDL można wprowadzać złożonością do metadane systemu, które nie są dokładnie odzwierciedlane w starym widoki wykazu, takich jak sysobjects.W tym przykładzie zwracane przez sysobjects nazwę IDENTYFIKATORA i schemat użytkownika nie są zsynchronizowane i nie odzwierciedlają rozróżnienie między użytkownikiem a schematu wprowadzonych w 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

Ostrzeżenie

Należy użyć nowych widoki wykazu, w dowolnej bazy danych, w którym dowolne z następujących instrukcji DDL kiedykolwiek zastosowano: TWORZENIE/ZMIANY/UPUSZCZANIA SCHEMATU UTWORZYĆ/ZMIANY/UPUSZCZANIA UŻYTKOWNIKA; TWORZENIE/ZMIANY/UPUSZCZANIA ROLI; APPROLE UTWORZYĆ/ZMIANY/UPUSZCZANIA; autoryzacja ZMIANY.

Domyślne schematy

W celu rozpoznawania nazw securables, które nie są w pełni kwalifikowane nazwy SQL Server 2000 używa rozpoznawania nazw, aby sprawdzić, czy schemat własnością wywołującego użytkownik bazy danych i schematu własnością dbo.

Zaczyna się od SQL Server 2005, każdy użytkownik ma domyślny schemat. Domyślny schemat zestaw i zmienić za pomocą opcji DEFAULT_SCHEMA CREATE USER lub ALTER USER.Jeśli pozostanie DEFAULT_SCHEMA niezdefiniowana, użytkownik bazy danych będzie miał dbo jako swojego domyślnego schematu.