Zgodność widoków (języka Transact-SQL)

Wiele tabel systemowych z wcześniejszych wydań programu SQL Server jest teraz zaimplementowanych jako zestawy widoków.Te widoki są znane jako widoki zgodności i mają zapewnić zgodność ze starszymi wersjami.Widoki zgodności udostępniają te same metadane, które były dostępne w programie SQL Server 2000.Jednak widoki zgodności udostępniają jedynie metadane dotyczące funkcji wprowadzonych w programie SQL Server 2005 i nowszych wersjach.Dlatego podczas używania nowych funkcji, takich jak program Service Broker lub partycjonowanie, należy się przełączyć do używania widoków wykazu.

Inny powód uaktualnienia do widoków wykazu to fakt, że kolumny widoku zgodności przechowujące identyfikatory użytkowników i typów mogą zwracać wartość NULL lub powodować przepełnienia podczas operacji arytmetycznej.Dzieje się tak, ponieważ można utworzyć więcej niż 32 767 użytkowników, grup i ról oraz 32 767 typów danych.Na przykład, jeśli ma zostać utworzonych 32 768 użytkowników, a następnie ma zostać uruchomiona następująca kwerenda: SELECT * FROM sys.sysusers.Jeśli opcja ARITHABORT ma wartość ON, kwerenda zakończy się niepowodzeniem z błędem przepełnienia podczas operacji arytmetycznej.Jeśli opcja ARITHABORT ma wartość OFF, kolumna uid zwróci wartość NULL.

Aby uniknąć tych problemów, zaleca się używanie nowych widoków wykazu, które mogą obsługiwać zwiększoną liczbę identyfikatorów użytkowników i typów.W poniższej tabeli znajduje się lista kolumn, których dotyczy to przepełnienie.

Nazwa kolumna

Tylko niezawodnym sposobem znalezienia właściciel obiektu jest do widoku wykazu sys.objects kwerendy.

Za pomocą funkcja TYPEPROPERTY jest tylko niezawodnym sposobem znalezienia właściciela danego typu.

xusertype

Określa, że wynik predykat się zanegowane.

W poniższej tabela przedstawiono przypadki specjalne, wyjątków i warunki, które dotyczą zmiany autoryzacja.

UserType

Określa, że wynik predykat się zanegowane.

W poniższej tabela przedstawiono przypadki specjalne, wyjątków i warunki, które dotyczą zmiany autoryzacja.

memberuid

sys.types (języka Transact-SQL)

sys.database_role_members

groupuid

sys.types (języka Transact-SQL)

sys.database_role_members

UID

Zawiera wiersz dla każdego systemu i typ zdefiniowany przez użytkownika.

Aliasy zależne będą mapowane do nowego właściciela bazy danych.

UID

Jest unikatowe w schemacie.

  • sys.database_permissions

  • sys.server_permissions

przekazująca

Jest unikatowe w schemacie.

  • sys.database_permissions

  • sys.server_permissions

xusertype

Identyfikator schematu, do której należy dany typ.

Identyfikator właściciela pojedynczego, jeśli różni się od właściciela schematu.

UID

Identyfikator schematu, do której należy dany typ.

Identyfikator właściciela pojedynczego, jeśli różni się od właściciela schematu.

UID

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

sys.database_principals

altuid

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

sys.database_principals

kontrakt, typu MESSAGE lub usługa

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

sys.database_principals

UID

sp_table_constraints_rowset2

sys.dm_exec_plan_attributes

UID

sp_usertypes_rowset_rmt

sys.dm_exec_requests