DBCC OPENTRAN (Transact-SQL)

Инструкция DBCC OPENTRAN помогает определить активные транзакции, которые могут препятствовать усечению журнала. Инструкция DBCC OPENTRAN отображает сведения о самой старой активной транзакции и о самых старых реплицированных транзакциях, распределенных и нераспределенных, если таковые имеются в журнале транзакций указанной базы данных. Результаты отображаются только при наличии активной транзакции, которая приведена в журнале, или в случае, если в базе данных имеются сведения о репликации. Если в журнале нет активных транзакций, отображается информационное сообщение.

ПримечаниеПримечание

DBCC OPENTRAN не поддерживается для издателей, отличных от SQL Server.

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

Синтаксис

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

Аргументы

  • database_name | database_id| 0
    Имя или идентификатор базы данных, для которой необходимо отобразить сведения о самой давней транзакции. Если значение не указано или указано значение 0, используется текущая база данных. Имена баз данных должны соответствовать правилам для идентификаторов.

  • TABLERESULTS
    Указывает, что результаты должны выводиться в табличном формате, чтобы их можно было загрузить в таблицу. Используйте этот параметр для создания таблицы результатов, которые могут быть вставлены в таблицу для сравнений. Если этот аргумент не указан, результаты форматируются так, чтобы они были более удобочитаемыми.

  • NO_INFOMSGS
    Подавляет вывод всех информационных сообщений.

Замечания

Используйте инструкцию DBCC OPENTRAN, чтобы определить, существует ли открытая транзакция в журнале транзакций. При выполнении инструкции BACKUP LOG только неактивная часть журнала может быть усечена; открытая транзакция может помешать полному усечению журнала транзакций. Для определения открытой транзакции получите идентификатор системного процесса с помощью хранимой процедуры sp_who.

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

Инструкция DBCC OPENTRAN возвращает следующий результирующий набор, если нет открытых транзакций:

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

Разрешения

Необходимо членство в предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.

Примеры

А.Возвращение самой старой активной транзакции

В следующем примере сведения о транзакциях извлекаются для текущей базы данных. Полученные результаты могут отличаться от приведенных ниже.

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

Ниже приводится результирующий набор.

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 Server.

Б.Указание параметра WITH TABLERESULTS

В следующем примере результаты команды DBCC OPENTRAN загружаются во временную таблицу.

-- 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

См. также

Справочник

BEGIN TRANSACTION (Transact-SQL)

COMMIT TRANSACTION (Transact-SQL)

DBCC (Transact-SQL)

DB_ID (Transact-SQL)

ROLLBACK TRANSACTION (Transact-SQL)