Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Az SQL Server korábbi kiadásaiból származó rendszertábla sok most már nézetek halmazaként van megvalósítva. Ezeket a nézeteket kompatibilitási nézeteknek nevezik, és csak visszafelé való kompatibilitásra szolgálnak. A kompatibilitási nézetek ugyanazokat a metaadatokat tárják fel, amelyek az SQL Server 2000-ben (8.x) elérhetők voltak. Azonban a kompatibilitási nézetek nem fedik fel az SQL Server 2005 (9.x) és későbbi verziókban bevezetett funkciókhoz kapcsolódó metaadatokat. Ezért, amikor új funkciókat használsz, mint például Service Broker vagy partíció, át kell váltanod a katalógusnézetekre.
Egy másik ok a katalógusnézetekre való frissítésnek, hogy a kompatibilitási nézetű oszlopok, amelyek felhasználói azonosítókat és típusazonosítókat tárolnak, NULL-t adhatnak vissza, vagy aritmetikai túlcsordulásokat indíthatnak el. Ennek oka, hogy több mint 32 767 felhasználót, csoportot és szerepet, valamint 32 767 adattípust tudsz létrehozni. Például, ha 32 768 felhasználót hoznánk létre, majd a következő lekérdezést futtatnánk: SELECT * FROM sys.sysusers. Ha az ARITHABORT ON-ra van állítva, a lekérdezés aritmetikai túlömlés hibával bukik el. Ha az ARITHABORT OFF-ra van állítva, az uid oszlop NULL-t ad vissza.
E problémák elkerülése érdekében javasoljuk, hogy használja az új katalógusnézeteket, amelyek képesek kezelni a megnövekedett felhasználói azonosítók és típusazonosítók számát. Az alábbi táblázat felsorolja azokat az oszlopokat, amelyek ennek a túlcsordulásnak vannak kitéve.
| Oszlop név | Kompatibilitási nézet | SQL Server 2005 nézet |
|---|---|---|
| xusertype | syscolumns | sys.columns |
| usertype | syscolumns | sys.columns |
| memberuid | Rendszertagok | sys.database_role_members |
| Groupuid | Rendszertagok | sys.database_role_members |
| Uid | sysobjects | sys.objects |
| Uid | sysprotect |
sys.database_permissions sys.server_permissions |
| Adományozó | sysprotect |
sys.database_permissions sys.server_permissions |
| xusertype | Systípusok | sys.types |
| Uid | Systípusok | sys.types |
| Uid | sysusers | sys.database_principals |
| Altuid | sysusers | sys.database_principals |
| Gid | sysusers | sys.database_principals |
| Uid | syscacheobjects | sys.dm_exec_plan_attributes |
| Uid | sysprocessesek | sys.dm_exec_requests |
Ha használóadatbázisban hivatkoznak rájuk, azok a rendszer táblák, amelyeket az SQL Server 2000-ben elavultnak jelentettek (például syslanguages vagy syscacheobjects), most a rendszerşem vissza-kompatibilitási nézetéhez vannak kötve. Mivel az SQL Server 2000 rendszertábláit több verzióra is lejáratták az időből, ezt a változást nem tekintik megszakító változásnak.
Példa: Ha egy felhasználó létrehoz egy syslanguages nevű felhasználói táblát egy felhasználói adatbázisban, az SQL Server 2008-ban az adott adatbázisban lévő utasítás SELECT * from dbo.syslanguages; visszaadja a felhasználói tábla értékeit. Az SQL Server 2012-től kezdve ez a gyakorlat a sys.syslanguages rendszernézetű adatait eredményezi.
Lásd még:
katalógusnézetek (Transact-SQL)
Rendszertáblák leképezése rendszernézetekhez (Transact-SQL)