Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Mengontrol perilaku pernyataan TRANSAKSI PENERAPAN Transact-SQL. Nilai default untuk pengaturan ini adalah NONAKTIF. Ini berarti bahwa server tidak akan menutup kursor saat Anda melakukan transaksi.
Sintaks
SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }
Keterangan
Saat SET CURSOR_CLOSE_ON_COMMIT AKTIF, pengaturan ini menutup kursor terbuka pada penerapan atau pengembalian sesuai dengan ISO. Saat SET CURSOR_CLOSE_ON_COMMIT OFF, kursor tidak ditutup saat transaksi dilakukan.
Catatan
SET CURSOR_CLOSE_ON_COMMIT ke ON tidak akan menutup kursor terbuka saat rollback saat rollback diterapkan ke savepoint_name dari pernyataan SAVE TRANSACTION.
Saat SET CURSOR_CLOSE_ON_COMMIT NONAKTIF, pernyataan ROLLBACK hanya menutup kursor asinkron terbuka yang tidak terisi penuh. Kursor STATIC atau INSENSITIVE yang dibuka setelah modifikasi dilakukan tidak akan lagi mencerminkan status data jika modifikasi digulung balik.
SET SET CURSOR_CLOSE_ON_COMMIT mengontrol perilaku yang sama dengan CURSOR_CLOSE_ON_COMMIT opsi database. Jika CURSOR_CLOSE_ON_COMMIT diatur ke ON atau OFF, pengaturan tersebut digunakan pada koneksi. Jika SET CURSOR_CLOSE_ON_COMMIT belum ditentukan, nilai di kolom is_cursor_close_on_commit_on dalam tampilan katalog sys.databases berlaku.
Penyedia OLE DB Klien Asli SQL Server untuk SQL Server dan driver ODBC Klien Asli SQL Server keduanya diatur CURSOR_CLOSE_ON_COMMIT ke OFF saat terhubung. DB-Library tidak secara otomatis mengatur nilai.CURSOR_CLOSE_ON_COMMIT
Saat SETSET ANSI_DEFAULTS ON, diaktifkan. SETSET CURSOR_CLOSE_ON_COMMIT
Pengaturan SET CURSOR_CLOSE_ON_COMMIT diatur pada waktu eksekusi atau run time dan bukan pada waktu penguraian.
Untuk menampilkan pengaturan saat ini untuk pengaturan ini, jalankan kueri berikut.
DECLARE @CURSOR_CLOSE VARCHAR(3) = 'OFF';
IF ( (4 & @@OPTIONS) = 4 ) SET @CURSOR_CLOSE = 'ON';
SELECT @CURSOR_CLOSE AS CURSOR_CLOSE_ON_COMMIT;
Izin
Memerlukan keanggotaan dalam peran publik .
Contoh
Contoh berikut mendefinisikan kursor dalam transaksi dan mencoba menggunakannya setelah transaksi dilakukan.
-- SET CURSOR_CLOSE_ON_COMMIT
-------------------------------------------------------------------------------
SET NOCOUNT ON;
CREATE TABLE t1 (a INT);
GO
INSERT INTO t1
VALUES (1), (2);
GO
PRINT '-- SET CURSOR_CLOSE_ON_COMMIT ON';
GO
SET CURSOR_CLOSE_ON_COMMIT ON;
GO
PRINT '-- BEGIN TRAN';
BEGIN TRAN;
PRINT '-- Declare and open cursor';
DECLARE testcursor CURSOR FOR
SELECT a FROM t1;
OPEN testcursor;
PRINT '-- Commit tran';
COMMIT TRAN;
PRINT '-- Try to use cursor';
FETCH NEXT FROM testcursor;
CLOSE testcursor;
DEALLOCATE testcursor;
GO
PRINT '-- SET CURSOR_CLOSE_ON_COMMIT OFF';
GO
SET CURSOR_CLOSE_ON_COMMIT OFF;
GO
PRINT '-- BEGIN TRAN';
BEGIN TRAN;
PRINT '-- Declare and open cursor';
DECLARE testcursor CURSOR FOR
SELECT a FROM t1;
OPEN testcursor;
PRINT '-- Commit tran';
COMMIT TRAN;
PRINT '-- Try to use cursor';
FETCH NEXT FROM testcursor;
CLOSE testcursor;
DEALLOCATE testcursor;
GO
DROP TABLE t1;
GO
Lihat Juga
ALTER DATABASE (Transact-SQL)
MULAI TRANSAKSI (Transact-SQL)
TUTUP (T-SQL)
TRANSAKSI PENERAPAN (T-SQL)
TRANSAKSI ROLLBACK (Transact-SQL)
SET Pernyataan (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)