sp_lock (Transact-SQL)sp_lock (Transact-SQL)

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

ロックに関する情報を報告します。Reports information about locks.

重要

この機能はメンテナンス モードであり、Microsoft SQL Server の将来のバージョンで削除される可能性があります。This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。Avoid using this feature in new development work, and plan to modify applications that currently use this feature. ロックに関する情報を取得する、SQL Server データベース エンジンSQL Server Database Engineを使用して、 sys.dm_tran_locks動的管理ビュー。To obtain information about locks in the SQL Server データベース エンジンSQL Server Database Engine, use the sys.dm_tran_locks dynamic management view.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
sp_lock [ [ @spid1 = ] 'session ID1' ] [ , [@spid2 = ] 'session ID2' ]  
[ ; ]  

引数Arguments

[ @spid1 = ] 'session ID1' データベース エンジンDatabase Engineからのセッション ID 番号sys.dm_exec_sessionsロックに関する情報は、ユーザーが。[ @spid1 = ] 'session ID1' Is a データベース エンジンDatabase Engine session ID number from sys.dm_exec_sessions for which the user wants locking information. session ID1int既定値は NULL です。session ID1 is int with a default value of NULL. 実行sp_whoセッションに関するプロセス情報を取得します。Execute sp_who to obtain process information about the session. 場合session ID1が指定されていない、すべてのロックに関する情報が表示されます。If session ID1 is not specified, information about all locks is displayed.

[ @spid2 = ] 'session ID2'データベース エンジンDatabase Engineからのセッション ID 番号sys.dm_exec_sessionsと同時にロックしている可能性がsession ID1について、ユーザーが必要とされる情報。[ @spid2 = ] 'session ID2' Is another データベース エンジンDatabase Engine session ID number from sys.dm_exec_sessions that might have a lock at the same time as session ID1 and about which the user also wants information. セッション ID2int既定値は NULL です。session ID2 is int with a default value of NULL.

リターン コードの値Return Code Values

成功した場合は 0 を返します。0 (success)

結果セットResult Sets

Sp_lockで指定したセッションによって保持されている各ロックに 1 行が結果セットに含まれています、 **@spid1** と **@spid2** パラメーター。The sp_lock result set contains one row for each lock held by the sessions specified in the **@spid1** and **@spid2** parameters. どちらの場合 **@spid1** も **@spid2** を指定すると、結果セットのレポート、ロックのすべてのセッションのインスタンスで現在アクティブなデータベース エンジンDatabase Engineします。If neither **@spid1** nor **@spid2** is specified, the result set reports the locks for all sessions currently active in the instance of the データベース エンジンDatabase Engine.

列名Column name データ型Data type 説明Description
spidspid smallintsmallint データベース エンジンDatabase Engineロックを要求するプロセスのセッション ID 番号。The データベース エンジンDatabase Engine session ID number for the process requesting the lock.
dbiddbid smallintsmallint ロックが保持されているデータベースの ID 番号です。The identification number of the database in which the lock is held. DB_NAME() 関数を使用すると、データベースを識別します。You can use the DB_NAME() function to identify the database.
オブジェクト IdObjId intint ロックが保持されているオブジェクトの識別番号。The identification number of the object on which the lock is held. オブジェクトを識別するために、関連するデータベースで OBJECT_NAME() 関数を使用できます。You can use the OBJECT_NAME() function in the related database to identify the object. 99 の値は、データベース内のページの割り当てを記録するために使用するシステム ページの 1 つのロックを示す特殊なケースです。A value of 99 is a special case that indicates a lock on one of the system pages used to record the allocation of pages in a database.
IndIdIndId smallintsmallint ロックが保持されているインデックスの識別番号。The identification number of the index on which the lock is held.
Type nchar(4)nchar(4) ロックの種類:The lock type:

RID = 行識別子 (RID) によって識別されるテーブル内の単一行のロック。RID = Lock on a single row in a table identified by a row identifier (RID).

KEY = シリアル化可能なトランザクションのキーの範囲を保護するインデックス内のロック。KEY = Lock within an index that protects a range of keys in serializable transactions.

PAG = データまたはインデックス ページのロック。PAG = Lock on a data or index page.

EXT = エクステントのロック。EXT = Lock on an extent.

TAB = すべてのデータとインデックスを含むテーブル全体のロック。TAB = Lock on an entire table, including all data and indexes.

DB = データベースのロック。DB = Lock on a database.

FIL = データベース ファイルのロック。FIL = Lock on a database file.

APP = アプリケーションで指定されたリソースのロック。APP = Lock on an application-specified resource.

MD = メタデータまたはカタログ情報のロック。MD = Locks on metadata, or catalog information.

HBT = ヒープまたは B-Tree インデックスのロック。HBT = Lock on a heap or B-Tree index. SQL ServerSQL Server ではこの情報は不完全です。This information is incomplete in SQL ServerSQL Server.

AU = アロケーション ユニットのロック。AU = Lock on an allocation unit. SQL ServerSQL Server ではこの情報は不完全です。This information is incomplete in SQL ServerSQL Server.
リソースResource nchar(32)nchar(32) ロックされているリソースを識別する値。The value identifying the resource that is locked. 値の形式で識別されるリソースの種類に依存、列。The format of the value depends on the type of resource identified in the Type column:

値。リソースType Value: Resource Value

RID:形式 fileid:pagenumber 内の識別子: pagenumber rid、fileid が、ページを含むファイルを識別する、行が含まれるページを識別および rid ページでは、特定の行を識別します。RID: An identifier in the format fileid:pagenumber:rid, where fileid identifies the file containing the page, pagenumber identifies the page containing the row, and rid identifies the specific row on the page. fileid と一致する、 file_id内の列、 sys.database_filesカタログ ビューです。fileid matches the file_id column in the sys.database_files catalog view.

キー:によって内部的に使用される 16 進数、データベース エンジンDatabase Engineします。KEY: A hexadecimal number used internally by the データベース エンジンDatabase Engine.

PAG:Fileid:pagenumbe というフォーマット fileid はページを含むファイルを識別する、pagenumber はページを識別番号。PAG: A number in the format fileid:pagenumber, where fileid identifies the file containing the page, and pagenumber identifies the page.

EXT:範囲の最初のページを識別する番号。EXT: A number identifying the first page in the extent. この番号は、fileid:pagenumber というフォーマットで指定します。The number is in the format fileid:pagenumber.

タブ:テーブルが既にで識別されるため、提供される情報はありません、 ObjId列。TAB: No information provided because the table is already identified in the ObjId column.

DB:データベースが既にで識別されるため、提供される情報はありません、 dbid列。DB: No information provided because the database is already identified in the dbid column.

FIL:一致すると、ファイルの識別子、 file_id内の列、 sys.database_filesカタログ ビューです。FIL: The identifier of the file, which matches the file_id column in the sys.database_files catalog view.

アプリ:ロックされているアプリケーションのリソースに固有の識別子。APP: An identifier unique to the application resource being locked. DbPrincipleId の形式:<リソース文字列の 16 文字に最初の 2 つ ><ハッシュ値 >。In the format DbPrincipleId:<first two to 16 characters of the resource string><hashed value>.

MD: は、リソースの種類によって異なります。MD: varies by resource type. 詳細については、の説明を参照して、 resource_descriptionsys.dm_tran_locks (TRANSACT-SQL)します。For more information, see the description of the resource_description column in sys.dm_tran_locks (Transact-SQL).

HBT:提供される情報はありません。HBT: No information provided. 使用して、 sys.dm_tran_locks動的管理ビューを代わりにします。Use the sys.dm_tran_locks dynamic management view instead.

AU:提供される情報はありません。AU: No information provided. 使用して、 sys.dm_tran_locks動的管理ビューを代わりにします。Use the sys.dm_tran_locks dynamic management view instead.
モードMode nvarchar(8)nvarchar(8) 要求されたロック モードです。The lock mode requested. 次の値をとります。Can be:

NULL = いいえ、リソースにアクセスを許可します。NULL = No access is granted to the resource. プレースホルダーとしての役割を果たします。Serves as a placeholder.

Sch-S = スキーマ安定度。Sch-S = Schema stability. スキーマ エレメントに対してスキーマ安定度ロックが保持されているセッションの中では、テーブルやインデックスなどのスキーマ エレメントは削除されません。Ensures that a schema element, such as a table or index, is not dropped while any session holds a schema stability lock on the schema element.

Sch-M = スキーマ修正。Sch-M = Schema modification. 特定のリソースのスキーマを変更するセッションで保持される必要があります。Must be held by any session that wants to change the schema of the specified resource. 他のセッションで目的のオブジェクトが参照されないようにします。Ensures that no other sessions are referencing the indicated object.

S = 共有。S = Shared. 保持しているセッションに、リソースへの共有アクセスが許可されます。The holding session is granted shared access to the resource.

U = 更新。U = Update. リソース上で取得された更新ロックが、最終的に更新されることが許可されます。Indicates an update lock acquired on resources that may eventually be updated. 一般的な形式の複数のセッションは後で潜在的な更新プログラムのリソースをロックするときに発生するデッドロックを防ぐために使用されます。It is used to prevent a common form of deadlock that occurs when multiple sessions lock resources for potential update at a later time.

X = 排他。X = Exclusive. 保持しているセッションで、リソースへの排他アクセスが許可されます。The holding session is granted exclusive access to the resource.

IS = インテント共有です。IS = Intent Shared. ロック階層の下位のリソースに S ロックを設定するよう指定します。Indicates the intention to place S locks on some subordinate resource in the lock hierarchy.

IU = インテント更新。IU = Intent Update. ロック階層の下位のリソースに U ロックを設定するよう指定します。Indicates the intention to place U locks on some subordinate resource in the lock hierarchy.

IX = インテント排他。IX = Intent Exclusive. ロック階層の下位のリソースに X ロックを設定するよう指定します。Indicates the intention to place X locks on some subordinate resource in the lock hierarchy.

SIU = 共有インテント更新。SIU = Shared Intent Update. ロック階層の下位のリソースに更新ロックを設定する目的で、リソースへの共有アクセスを指定します。Indicates shared access to a resource with the intent of acquiring update locks on subordinate resources in the lock hierarchy.

6 = 共有インテント排他。SIX = Shared Intent Exclusive. ロック階層の下位のリソースに排他ロックを設定する目的で、リソースへの共有アクセスを指定します。Indicates shared access to a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.

UIX = 更新インテント排他。UIX = Update Intent Exclusive. ロック階層の下位のリソースに排他ロックを設定する目的で、リソースに保持する更新ロックを指定します。Indicates an update lock hold on a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.

BU = 一括更新します。BU = Bulk Update. 一括操作で使用します。Used by bulk operations.

RangeS_S = 共有キー範囲と共有リソース ロック。RangeS_S = Shared Key-Range and Shared Resource lock. 直列化可能な範囲スキャンを指定します。Indicates serializable range scan.

RangeS_U = 共有キー範囲と更新リソース ロック。RangeS_U = Shared Key-Range and Update Resource lock. 直列化可能な更新スキャンを指定します。Indicates serializable update scan.

RangeI_N = 挿入キー範囲と NULL リソース ロック。RangeI_N = Insert Key-Range and Null Resource lock. 新しいキーをインデックスに挿入する前に、範囲をテストするために使用します。Used to test ranges before inserting a new key into an index.

RangeI_S = キー範囲変換ロックです。RangeI_S = Key-Range Conversion lock. RangeI_N と S ロックの重なりによって作成されます。Created by an overlap of RangeI_N and S locks.

RangeI_U = 範囲 I_n と U ロックの重なりによって作成されるキー範囲変換ロックです。RangeI_U = Key-Range Conversion lock created by an overlap of RangeI_N and U locks.

RangeI_X = 範囲 I_n と X ロックの重なりによって作成されるキー範囲変換ロックです。RangeI_X = Key-Range Conversion lock created by an overlap of RangeI_N and X locks.

RangeX_S = 範囲 I_n と範囲 S_s の重なりによって作成されるキー範囲変換ロックです。RangeX_S = Key-Range Conversion lock created by an overlap of RangeI_N and RangeS_S. ロックです。locks.

RangeX_U = 範囲 I_N と範囲 S_U ロックの重複によって作成されるキー範囲変換ロックです。RangeX_U = Key-Range Conversion lock created by an overlap of RangeI_N and RangeS_U locks.

RangeX_X = 排他キー範囲と排他リソース ロック。RangeX_X = Exclusive Key-Range and Exclusive Resource lock. 範囲内のキーを更新する場合に使用する変換ロックです。This is a conversion lock used when updating a key in a range.
状態Status nvarchar(5)nvarchar(5) ロック要求の状態:The lock request status:

CNVRT:ロックは別のモードから変換されているが、変換は、競合するモードでロックを保持している別のプロセスによってブロックされます。CNVRT: The lock is being converted from another mode, but the conversion is blocked by another process holding a lock with a conflicting mode.

許可:ロックが取得されました。GRANT: The lock was obtained.

待ってください。ロックは、競合するモードでロックを保持している別のプロセスによってブロックされます。WAIT: The lock is blocked by another process holding a lock with a conflicting mode.

コメントRemarks

ユーザーは、読み取り操作でのロックを制御できます。Users can control the locking of read operations by:

セッションに関連付けられていないすべての分散トランザクションは、孤立しているトランザクションです。All distributed transactions not associated with a session are orphaned transactions. データベース エンジンDatabase Engineでは、孤立しているすべての分散トランザクションに、-2 の SPID 値が割り当てられます。このため、ユーザーは、孤立している分散トランザクションを簡単に識別できます。The データベース エンジンDatabase Engine assigns all orphaned distributed transactions the SPID value of -2, which makes it easier for a user to identify blocking distributed transactions. 詳細については、「 マークされたトランザクションを使用して関連するデータベースを一貫した状態に復元する方法 (完全復旧モデル)」を参照してください。For more information, see Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

アクセス許可Permissions

VIEW SERVER STATE 権限が必要です。Requires VIEW SERVER STATE permission.

使用例Examples

A.A. すべてのロックを一覧表示Listing all locks

次の例では、データベース エンジンDatabase Engineのインスタンスで現在保持されているすべてのロックに関する情報を表示します。The following example displays information about all locks currently held in an instance of the データベース エンジンDatabase Engine.

USE master;  
GO  
EXEC sp_lock;  
GO  

B.B. 1 つのサーバー プロセスからロックを表示するListing a lock from a single-server process

次の例では、プロセス ID 53 に関する情報を表示します。ロックなどの情報も含まれます。The following example displays information, including locks, about process ID 53.

USE master;  
GO  
EXEC sp_lock 53;  
GO  

関連項目See Also

sys.dm_tran_locks (Transact-SQL) sys.dm_tran_locks (Transact-SQL)
DB_NAME (Transact-SQL) DB_NAME (Transact-SQL)
KILL (Transact-SQL) KILL (Transact-SQL)
OBJECT_NAME (Transact-SQL) OBJECT_NAME (Transact-SQL)
sp_who (Transact-SQL) sp_who (Transact-SQL)
sys.database_files (Transact-SQL) sys.database_files (Transact-SQL)
sys.dm_os_tasks と組み合わせます(TRANSACT-SQL) sys.dm_os_tasks (Transact-SQL)
sys.dm_os_threads (TRANSACT-SQL)sys.dm_os_threads (Transact-SQL)