Không thể xóa hoặc thay thế cơ sở dữ liệu vì nó hiện đang được sử dụng Sybase

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

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

      

     dbid 0 

      

     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

Chủ Đề