DBCC OPENTRAN (Transact-SQL)DBCC OPENTRAN (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL DatabaseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database

Инструкция DBCC OPENTRAN помогает определить активные транзакции, которые могут препятствовать усечению журнала.DBCC OPENTRAN helps to identify active transactions that may be preventing log truncation. Инструкция DBCC OPENTRAN отображает сведения о самой старой активной транзакции и о самых старых реплицированных транзакциях, распределенных и нераспределенных, если таковые имеются в журнале транзакций указанной базы данных.DBCC OPENTRAN displays information about the oldest active transaction and the oldest distributed and nondistributed replicated transactions, if any, within the transaction log of the specified database. Результаты отображаются только при наличии активной транзакции, которая приведена в журнале, или в случае, если в базе данных имеются сведения о репликации.Results are displayed only if there is an active transaction that exists in the log or if the database contains replication information. Если в журнале нет активных транзакций, отображается информационное сообщение.An informational message is displayed if there are no active transactions in the log.

Примечание

DBCC OPENTRAN не поддерживается для издателей, отличных от издателей SQL ServerSQL Server.DBCC OPENTRAN is not supported for non- SQL ServerSQL Server Publishers.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

DBCC OPENTRAN   
[   
    ( [ database_name | database_id | 0 ] )   
    { [ WITH TABLERESULTS ]  
      [ , [ NO_INFOMSGS ] ]  
    }  
]   

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

АргументыArguments

database_name | database_id| 0database_name | database_id| 0
Имя или идентификатор базы данных, для которой необходимо отобразить сведения о самой давней транзакции.Is the name or ID of the database for which to display the oldest transaction information. Если значение не указано или указано значение 0, используется текущая база данных.If not specified, or if 0 is specified, the current database is used. Имена баз данных должны соответствовать правилам идентификаторов.Database names must comply with the rules for identifiers.

TABLERESULTSTABLERESULTS
Указывает, что результаты должны выводиться в табличном формате, чтобы их можно было загрузить в таблицу.Specifies the results in a tabular format that can be loaded into a table. Используйте этот параметр для создания таблицы результатов, которые могут быть вставлены в таблицу для сравнений.Use this option to create a table of results that can be inserted into a table for comparisons. Если этот аргумент не указан, результаты форматируются так, чтобы они были более удобочитаемыми.When this option is not specified, results are formatted for readability.

NO_INFOMSGSNO_INFOMSGS
Подавляет вывод всех информационных сообщений.Suppresses all informational messages.

RemarksRemarks

Используйте инструкцию DBCC OPENTRAN, чтобы определить, существует ли открытая транзакция в журнале транзакций.Use DBCC OPENTRAN to determine whether an open transaction exists within the transaction log. При выполнении инструкции BACKUP LOG только неактивная часть журнала может быть усечена; открытая транзакция может помешать полному усечению журнала транзакций.When you use the BACKUP LOG statement, only the inactive part of the log can be truncated; an open transaction can prevent the log from truncating completely. Для определения открытой транзакции получите идентификатор системного процесса, выполнив инструкцию sp_who.To identify an open transaction, use sp_who to obtain the system process ID.

Результирующие наборыResult Sets

Инструкция DBCC OPENTRAN возвращает следующий результирующий набор, если нет открытых транзакций:DBCC OPENTRAN returns the following result set when there are no open transactions:

No active open transactions.  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

РазрешенияPermissions

Необходимо быть членом предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner .Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

ПримерыExamples

A.A. Возвращение самой старой активной транзакцииReturning the oldest active transaction

В следующем примере сведения о транзакциях извлекаются для текущей базы данных.The following example obtains transaction information for the current database. Полученные результаты могут отличаться от приведенных ниже.Results may vary.

CREATE TABLE T1(Col1 INT, Col2 CHAR(3));  
GO  
BEGIN TRAN  
INSERT INTO T1 VALUES (101, 'abc');  
GO  
DBCC OPENTRAN;  
ROLLBACK TRAN;  
GO  
DROP TABLE T1;  
GO  

Результирующий набор:Here is the result set.

Transaction information for database 'master'.
Oldest active transaction:
SPID (server process ID) : 52
UID (user ID) : -1
Name          : user_transaction
LSN           : (518:1576:1)
Start time    : Jun  1 2004  3:30:07:197PM
SID           : 0x010500000000000515000000a065cf7e784b9b5fe77c87709e611500
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Примечание

Результат «UID (идентификатор пользователя)» не имеет смысла и будет удален в следующих версиях SQL ServerSQL Server.The "UID (user ID)" result is meaningless and will be removed in a future version of SQL ServerSQL Server.

Б.B. Указание параметра WITH TABLERESULTSSpecifying the WITH TABLERESULTS option

В следующем примере результаты команды DBCC OPENTRAN загружаются во временную таблицу.The following example loads the results of the DBCC OPENTRAN command into a temporary table.

-- Create the temporary table to accept the results.  
CREATE TABLE #OpenTranStatus (  
   ActiveTransaction VARCHAR(25),  
   Details sql_variant   
   );  
-- Execute the command, putting the results in the table.  
INSERT INTO #OpenTranStatus   
   EXEC ('DBCC OPENTRAN WITH TABLERESULTS, NO_INFOMSGS');  
  
-- Display the results.  
SELECT * FROM #OpenTranStatus;  
GO  

См. такжеSee Also

BEGIN TRANSACTION (Transact-SQL)BEGIN TRANSACTION (Transact-SQL)
COMMIT TRANSACTION (Transact-SQL)COMMIT TRANSACTION (Transact-SQL)
DBCC (Transact-SQL)DBCC (Transact-SQL)
DB_ID (Transact-SQL)DB_ID (Transact-SQL)
ROLLBACK TRANSACTION (Transact-SQL)ROLLBACK TRANSACTION (Transact-SQL)