DBCC OPENTRAN (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Membantu mengidentifikasi transaksi aktif yang mungkin mencegah pemotongan log. DBCC OPENTRAN menampilkan informasi tentang transaksi aktif terlama dan transaksi terdistribusi terlama dan tidak didistribusikan yang direplikasi, jika ada, dalam log transaksi database yang ditentukan. Hasil ditampilkan hanya jika ada transaksi aktif yang ada di log atau jika database berisi informasi replikasi. Pesan informasi ditampilkan jika tidak ada transaksi aktif dalam log.

Catatan

DBCC OPENTRAN tidak didukung untuk Penerbit non-SQL Server.

Konvensi sintaks transact-SQL

Sintaksis

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

| database_name database_id | 0

Nama atau ID database untuk menampilkan informasi transaksi terlama. Jika tidak ditentukan, atau jika 0 ditentukan, database saat ini digunakan. Nama database harus mematuhi aturan untuk pengidentifikasi.

TABLERESULTS

Menentukan hasil dalam format tabular yang dapat dimuat ke dalam tabel. Gunakan opsi ini untuk membuat tabel hasil yang dapat disisipkan ke dalam tabel untuk perbandingan. Jika opsi ini tidak ditentukan, hasil diformat untuk keterbacaan.

NO_INFOMSGS

Menekan semua pesan informasi.

Keterangan

Gunakan DBCC OPENTRAN untuk menentukan apakah transaksi terbuka ada dalam log transaksi. Saat Anda menggunakan BACKUP LOG pernyataan, hanya bagian log yang tidak aktif yang dapat dipotong; transaksi terbuka dapat mencegah log terpotong sepenuhnya. Untuk mengidentifikasi transaksi terbuka, gunakan sp_who untuk mendapatkan ID proses sistem.

Tataan hasil

DBCC OPENTRAN mengembalikan hasil berikut yang ditetapkan ketika tidak ada transaksi terbuka:

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

Izin

Memerlukan keanggotaan dalam peran server tetap sysadmin atau peran database tetap db_owner .

Contoh

J. Mengembalikan transaksi aktif terlama

Contoh berikut mendapatkan informasi transaksi untuk database saat ini. Hasilnya dapat bervariasi.

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

Berikut adalah hasil yang ditetapkan.

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.

Catatan

Hasil "UID (ID pengguna)" tidak ada artinya dan akan dihapus dalam versi SQL Server di masa mendatang.

B. Tentukan opsi WITH TABLERESULTS

Contoh berikut memuat hasil DBCC OPENTRAN perintah ke dalam tabel sementara.

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