Oddzielanie schematu użytkownika

Zmienić zachowanie schematów w SQL Server 2005.Schematy nie są już równoważne użytkowników bazy danych; Każdy schemat jest teraz odrębny obszar nazw istnieje niezależnie od użytkownika bazy danych, która go utworzyła.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ść jest zbywalne.

Nowe zachowanie

Oddzielenie własność od schematów ma istotny wpływ:

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

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

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

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

  • Uprawnienia do schematów i securables zawartych w schemacie, można zarządzać z większą precyzją niż w starszych wersjach.Aby uzyskać więcej informacji, zobacz UDZIEL uprawnienia schematu (Transact-SQL) i UDZIELIĆ uprawnień obiektu (Transact-SQL).

  • Schemat może być własnością podmiotu dowolnej bazy danych.Obejmuje to role i ról aplikacji.

  • Użytkownik bazy danych można upuszczać bez upuszczanie obiektów w odpowiednim schemacie.

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

  • Wykaz widoki przeznaczone dla starszych wersjach SQL Server może zwracać niepoprawne wyniki.Obejmuje to sysobjects.

  • Podczas tworzenia obiektu bazy danych, jeśli określić prawidłową domena zleceniodawca (użytkownika lub grupy) jako właściciela obiektu, głównej domena zostaną dodane do bazy danych jako schematu.Nowy schemat będzie własnością zleceniodawcy domena.

Nowe widoki wykazu

Począwszy od SQL Server 2005, schematy są jawne podmioty odzwierciedlone metadane; i w rezultacie schematów może mieć tylko jednego właściciela, ale pojedynczy użytkownik może posiadać wiele schematów.To złożonych relacji nie jest uwzględniany w SQL Server 2000 tabele systemowe, więc SQL Server 2005 wprowadziła nowe widoki wykazu, w których dokładnie odzwierciedlać nowe metadane.

Tabela poniżej pokazuje następujące, mapowanie między SQL Server 2000 tabele systemowe i równoważne SQL Server 2005 i nowszym widoki wykazu.

tabela systemowa SQL Server 2000

SQL Server 2005 i nowszych widoku wykazu

sysusers

sys.database_principals

sys.schemas

syslogins

sys.server_principals

SQL Server 2005 Wprowadzono więcej niż 250 nowe widoki wykazu.Zdecydowanie zaleca się, aby użyć nowych widoki wykazu do dostępu do metadane.Aby uzyskać więcej informacji, zobacz Wykaz widoki (Transact-SQL).

Nowe instrukcje DDL można wprowadzać do metadane systemu złożonością, które nie są dokładnie odzwierciedlone w starym widoki wykazu takich jak sysobjects.W poniższym przykładzie nazwa użytkownika identyfikator i schemat zwrócony przez sysobjects nie są zsynchronizowane, a nie odzwierciedlać 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
PrzestrogaPrzestroga

Należy użyć nowego widoki wykazu w dowolnej bazy danych, w którym następującego DDL kiedykolwiek użyto instrukcji: UTWÓRZ/ZMIEŃ/UPUSZCZANIA SCHEMATU; UTWÓRZ/ZMIEŃ/UPUSZCZANIA UŻYTKOWNIKA; UTWÓRZ/ZMIEŃ/UPUSZCZANIA ROLĘ; UTWÓRZ/ZMIEŃ/UPUSZCZANIA APPROLE; ZMIENIA AUTORYZACJI.

Domyślne schematy

Rozpoznawanie nazw securables, że nie są w pełni kwalifikowane nazwy SQL Server 2000 korzysta z rozpoznawania nazw, do sprawdzania schematu własnością wywołującego użytkownika bazy danych i schematu własnością dbo.

Począwszy 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 DEFAULT_SCHEMA jest niezdefiniowana, użytkownik bazy danych będzie miał dbo jako jego schemat domyślny.