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