it-swarm.asia

Bagaimana Anda mengeluarkan pengguna dari database SQL Server 2008?

Kami perlu melakukan pemulihan, dan tidak bisa karena pengguna lain terhubung. Kami pikir kami telah memutus setiap proses, tetapi ternyata tidak.

Bagaimana kita, dari Management Studio, memulai orang lain sehingga kita dapat melakukan backup ini?

22
Daniel Williams

Ada dua cara untuk melakukannya:

  1. Klik kanan pada database di Object Explorer, pergi ke Tugas> Lepaskan. Pilih kotak centang Jatuhkan Koneksi.

  2. Setel basis data ke mode satu pengguna seperti diuraikan di sini :

    -- hit Ctrl+Shift+M in SSMS to fill in the template parameter
    USE master;
    GO
    
    ALTER DATABASE N'<Database Name, sysname,>'
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE;
    GO
    
    ALTER DATABASE N'<Database Name, sysname,>'
    SET READ_ONLY;
    GO
    
    ALTER DATABASE N'<Database Name, sysname,>'
    SET MULTI_USER;
    GO
    
25
Wil

Saya selalu menggunakan yang berikut ini:

USE master; -- get out of dbname myself
GO
-- kick all other users out:
ALTER DATABASE [dbname] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- prevent sessions from re-establishing connection:
ALTER DATABASE [dbname] SET OFFLINE;

Kadang-kadang ini membutuhkan waktu, dan kadang-kadang diblokir karena kaulah yang menjalankannya, dan Anda memiliki koneksi aktif ke database . Periksa jendela kueri lain yang mungkin memiliki konteks database yang sama - ini dapat mencakup dialog terbuka, Object Explorer, IntelliSense, pekerjaan yang sudah berjalan lama, dll.

Ketika saya selesai melakukan perubahan pada konfigurasi database itu, saya hanya:

ALTER DATABASE [dbname] SET ONLINE;
ALTER DATABASE [dbname] SET MULTI_USER;

Meskipun, kadang-kadang, hal yang perlu saya lakukan untuk database itu membutuhkan database untuk online, jadi kadang-kadang saya harus meninggalkannya dalam mode single-user dan melakukan ini:

ALTER DATABASE [dbname] SET ONLINE;
GO
USE [dbname];

Sekarang saya bisa melakukan perubahan, dan kemudian ketika saya siap bagi pengguna lain untuk terhubung, cukup:

ALTER DATABASE [dbname] SET MULTI_USER;
44
Aaron Bertrand

Saya biasanya mengatur database di single_user dan kemudian menunggu untuk menunda dan kemudian mengatur kembali database di multiuser seperti di bawah ini:

-- to kill all connections for particular db ... otherwise the restore will fail as exclusive lock cannot be obtained for the db being restored.

    alter database db_name
    set single_user with rollback immediate
    waitfor delay '00:00:05'  -- wait for 5 secs
    alter database db_name
    set multi_user
    restore database db_name from disk = 'D:\restore\db_name.bak'
    with replace, stats = 10, recovery -- if you want to recover your database online
    -- optional if you dont have the same directory/file structure
    move 'datafile logical name' to 'E:\data\physical_name.mdf',
    move 'logfile logical name' to 'F:\log\physical_name_log.ldf'
2
Kin Shah

Tidak ada opsi di atas yang berfungsi untuk saya karena server dipalu oleh beberapa upaya koneksi jarak jauh.

Ketika saya menutup port database tertentu pada windows firewall, Alter normal .. Set Multi_User bekerja dalam upaya pertama.

1
olafk