Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Mnoho systémových tabulek z dřívějších verzí SQL Serveru je nyní implementováno jako sada pohledů. Tyto pohledy se nazývají kompatibilní pohledy a jsou určeny pouze pro zpětnou kompatibilitu. Kompatibilní pohledy ukazují stejná metadata, která byla dostupná v SQL Server 2000 (8.x). Pohledy kompatibility však nezveřejňují žádná metadata týkající se funkcí, které byly představeny v SQL Server 2005 (9.x) a novějších. Proto když používáte nové funkce, jako je Service Broker nebo partitioning, musíte přejít na katalogové pohledy.
Dalším důvodem pro upgrade na katalogové zobrazení je, že sloupce kompatibilitního pohledu, které ukládají uživatelská ID a typová ID, mohou vracet NULL nebo vyvolat aritmetické přetečení. Je to proto, že můžete vytvořit více než 32 767 uživatelů, skupin a rolí a 32 767 datových typů. Například pokud byste vytvořili 32 768 uživatelů a poté spustili následující dotaz: SELECT * FROM sys.sysusers. Pokud je ARITHABORT nastaven na ON, dotaz selže s chybou aritmetického přetečení. Pokud je ARITHABORT nastaven na VYPNUTO, sloupec uid vrátí NULL.
Abychom se těmto problémům vyhnuli, doporučujeme používat nové katalogové pohledy, které zvládnou zvýšený počet uživatelských ID a typových ID. Následující tabulka uvádí sloupce, které podléhají tomuto přetečení.
| Název sloupce | Pohled na kompatibilitu | Pohled SQL Server 2005 |
|---|---|---|
| xusertype | syscolumns | sys.columns |
| Uživatelský typ | syscolumns | sys.columns |
| memberuid | Členové systému | sys.database_role_members |
| Groupuid | Členové systému | sys.database_role_members |
| Uid | Sysobjects | sys.objects |
| Uid | sysprotects |
sys.database_permissions sys.server_permissions |
| postupitel | sysprotects |
sys.database_permissions sys.server_permissions |
| xusertype | Systypy | sys.types |
| Uid | Systypy | sys.types |
| Uid | Sysusers | sys.database_principals |
| altuid | Sysusers | sys.database_principals |
| motoličnost | Sysusers | sys.database_principals |
| Uid | syscacheobjects | sys.dm_exec_plan_attributes |
| Uid | Sysprocesses | sys.dm_exec_requests |
Při odkazování v uživatelské databázi jsou systémové tabulky, které byly v SQL Server 2000 oznámeny jako zastaralé (například syslanguages nebo syscacheobject), nyní vázány na pohled zpětné kompatibility v sys schématu. Protože tabulky SQL Server 2000 byly ukončeny pro více verzí, tato změna není považována za zlomovou změnu.
Příklad: Pokud uživatel vytvoří uživatelskou tabulku nazvanou syslanguages v uživatelské databázi v SQL Server 2008, příkaz SELECT * from dbo.syslanguages; v této databázi vrátí hodnoty z uživatelské tabulky. Od SQL Server 2012 tato praxe vracejí data ze sys.syslanguages v systémovém zobrazení.
Viz také
zobrazení katalogu (Transact-SQL)
Mapování systémových tabulek na systémové pohledy (Transact-SQL)