Tôi đang cố hủy DB bằng vai trò SYSADMIN. Vài ngày trước, một trong những DB không thể truy cập được và đã cố gắng mở rộng DB và đó là lỗi "Cơ sở dữ liệu ABC không thể truy cập được"
hiện đang cố gắng loại bỏ lỗi db
Msg 5011, Cấp 14, Trạng thái 7, Dòng 1
Người dùng không có quyền thay đổi cơ sở dữ liệu 'ABC', cơ sở dữ liệu không tồn tại hoặc cơ sở dữ liệu không có trong .
Msg 5069, Mức 16, Trạng thái 1, Dòng 1
Lệnh ALTER DATABASE không thành công.
Msg 3702, Cấp 16, Trạng thái 4, Dòng 2
Không thể bỏ cơ sở dữ liệu "ABC" vì cơ sở dữ liệu này hiện đang được sử dụng.
tôi là vai trò SYSADMIN trên SQL Server
Làm thế nào có thể thả DB?
Can you check if there are any orphan processes . The dbt_keep is 1 and when you try to put database in single user , it is showing the count as 3. select spid from syslocks where spid not in [select spid from master..sysprocesses] What is the default database for the id with which you are trying to drop the database? If nothing works , try using below command: dbcc dbreboot[reboot,] go and then try dropping the database . HTH, Vivek > > What is your ASE version ? > > Adaptive Server Enterprise/12.5.4/EBF 15432 > ESD#8/P/Sun_svr4/OS 5.8/ase1254/210 > 5/64-bit/FBO/Sat Mar 22 14:38:37 2008 > > > > use master > > go > > dbcc traceon[3604] > > go > > dbcc dbtable[dbname] > > go > > > > any value greater than 0 for dbt_keep indicates that > > dbt_state=0x2[0x0002 [DBST_ACTIVE]] dbt_keep=1 > dbt_hdeskeep=0 > > 1> dbcc dbcacheremove[] > 2> go > DBCC execution completed. If DBCC printed error messages, > contact a user with > System Administrator [SA] role. > > 1> drop database > 2> go > Msg 3702, Level 16, State 4: > Server '', Line 1: > Cannot drop the database '' because it is currently in > use. > > > 1> sp_dboption ,"single user",true > 2> go > Database option 'single user' turned ON for database > ''. Running CHECKPOINT on database '' for option > 'single user' to take effect. > Attempt to set '' database to single user mode failed > because the usage count > is 3. Make sure that no other users are currently using > this database and rerun > CHECKPOINT. > [return status = 0] > > 1> select "kill",spid from sysprocesses where dbid = 24 > 2> go > spid > ---- ------ > > [0 rows affected] > > i am still not able to drop the db.
Nếu bạn muốn xóa cơ sở dữ liệu, bạn sẽ gặp lỗi này nếu có phiên mở trên cơ sở dữ liệu
Đầu tiên, đặt cơ sở dữ liệu ở chế độ single_user. Sau đó, bạn có thể xóa nó
1
2
3
4
5
6
SỬ DỤNG [chính]
ĐI
ALTER DATABASE Thử nghiệm SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ĐI
DROP CƠ SỞ DỮ LIỆU [Thử nghiệm]
ĐI
Với đoạn script trên, chúng ta đóng các kết nối đang mở trong cơ sở dữ liệu và đặt cơ sở dữ liệu là single_user để chỉ chúng ta có thể sử dụng nó và sau đó xóa nó. Nếu cơ sở dữ liệu đã ở chế độ single_user, bạn sẽ gặp lỗi như sau
Msg 5064, Cấp 16, Trạng thái 1, Dòng 3
Thay đổi trạng thái hoặc tùy chọn của cơ sở dữ liệu ” không thể được thực hiện vào lúc này. Cơ sở dữ liệu ở chế độ một người dùng và một người dùng hiện được kết nối với nó
Msg 5069, Cấp 16, Trạng thái 1, Dòng 3
Câu lệnh ALTER DATABASE không thành công
Msg 3702, Cấp 16, Trạng thái 4, Dòng 5
Không thể bỏ cơ sở dữ liệu “” vì nó hiện đang được sử dụng
Để hủy thủ công tất cả các phiên sử dụng cơ sở dữ liệu ở chế độ một người dùng, bạn phải chạy truy vấn sau. Bạn nên viết tên cơ sở dữ liệu của riêng mình thay vì “Test”
1
chọn * từ sys. các quy trình hệ thống ở đâu dbid=DB_ID['Test']
Các bản ghi được trả về do kết quả của truy vấn là các quy trình trên cơ sở dữ liệu này. Bạn có thể tìm và hủy các session_id sử dụng cơ sở dữ liệu của mình. Sau đó, bạn có thể xóa cơ sở dữ liệu. Ví dụ kết quả là 55 thì đánh 55
Sẽ an toàn hơn nếu tìm và hỏi người gửi truy vấn trước khi tắt truy vấn. Nếu bạn nghĩ rằng mình không cần phải hỏi bất kỳ ai, bạn có thể tự động hủy tất cả các phiên trong cơ sở dữ liệu bằng đoạn mã sau
1
2
3
4
5
6
7
8
9
10
11
12
khai báo @Sql varchar[1000], @databasename varchar[100]
set @databasename = 'Bạn Phải Viết
đặt @Sql = ''
chọn @Sql = @Sql + 'kill ' + convert[char[10], spid] + ' '
từ sư phụ. dbo. quy trình hệ thống
ở đâu db_name[dbid] = @databasename
và
dbid 0
và
spid @@spid
exec[@Sql]
ĐI
Tác giả. dbtut
Chúng tôi là một nhóm có hơn 10 năm kinh nghiệm quản lý cơ sở dữ liệu và BI. chuyên môn của chúng tôi. Oracle, Máy chủ SQL, PostgreSQL, MySQL, MongoDB, Elaticsearch, Kibana, Grafana