DBCC OPENTRAN (Transact-SQL)
Отображает сведения о самой давней активной транзакции и о самых старых реплицированных транзакциях, распределенных и нераспределенных, если такие есть в указанной базе данных. Результаты отображаются, только если есть активная транзакция или если база данных содержит сведения о репликации. Если нет активных транзакций, отображается информационное сообщение.
Примечание |
---|
DBCC OPENTRAN не поддерживается для издателей, отличных от SQL Server. |
Синтаксис
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
Ниже приводится результирующий набор.
Сведения о транзакциях для базы данных master.
Старейшая активная транзакция:
SPID (идентификатор процесса сервера): 52
UID (идентификатор пользователя): -1
Имя: user_transaction
LSN : (518:1576:1)
Время начала: 1 июня 2004 15:30:07:197
SID : 0x010500000000000515000000a065cf7e784b9b5fe77c87709e611500
Выполнение инструкции DBCC завершено. Если инструкция DBCC выдает сообщения об ошибках, обратитесь к системному администратору.
Примечание |
---|
Результат «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