システム互換性ビュー (Transact-SQL)
適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス
SQL Server の以前のリリースのシステム テーブルの多くは、一連のビューとして実装されるようになりました。 これらのビューは互換性ビューと呼ばれ、旧バージョンとの互換性のためだけに用意されています。 互換性ビューでは、SQL Server 2000 (8.x) で使用できたのと同じメタデータが公開されます。 ただし、互換性ビューでは、SQL Server 2005 (9.x) 以降で導入された機能に関連するメタデータは公開されません。 そのため、Service Broker やパーティション分割などの新機能を使用する場合は、カタログ ビューの使用に切り替える必要があります。
カタログ ビューへアップグレードするもう 1 つの理由としては、ユーザー ID および型 ID を格納する互換性ビューの列では NULL が返されるか算術オーバーフローが発生する可能性があることが挙げられます。 これは、32,767 を超えるユーザー、グループ、ロール、および 32,767 個のデータ型を作成できるためです。 たとえば、32,768 人のユーザーを作成し、次のクエリ SELECT * FROM sys.sysusers
を実行するとします。 ここで ARITHABORT が ON に設定されている場合、クエリは算術オーバーフロー エラーで失敗します。 ARITHABORT が OFF に設定されている場合、 uid 列は NULL を返します。
これらの問題を回避するには、増加するユーザー ID と種類 ID を処理できる新しいカタログ ビューを使用することをお勧めします。 次の表に、このオーバーフローが発生する可能性のある列を示します。
列名 | 互換性ビュー | SQL Server 2005 ビュー |
---|---|---|
xusertype | syscolumns | sys.columns |
usertype | syscolumns | sys.columns |
memberuid | sysmembers | sys.database_role_members |
groupuid | sysmembers | sys.database_role_members |
Uid | sysobjects | sys.objects |
Uid | sysprotects | sys.database_permissions sys.server_permissions |
グランター | sysprotects | sys.database_permissions sys.server_permissions |
xusertype | systypes | sys.types |
Uid | systypes | 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 | sysprocesses | sys.dm_exec_requests |
ユーザー データベースで参照されると、SQL Server 2000 で非推奨と発表されたシステム テーブル (syslanguages や syscacheobjects など) が、sys スキーマのバック互換ビューにバインドされるようになりました。 SQL Server 2000 システム テーブルは複数のバージョンで非推奨とされているため、この変更は破壊的変更とは見なされません。
例: ユーザーがユーザー データベースに syslanguages というユーザー テーブルを作成した場合、SQL Server 2008 では、そのデータベース内のステートメントSELECT * from dbo.syslanguages;
はユーザー テーブルから値を返します。 SQL Server 2012 以降では、システム ビュー sys.syslanguages からデータが返されます。
参照
カタログ ビュー (Transact-SQL)
システム ビューへのシステム テーブルのマッピング (Transact-SQL)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示