Không thể xóa cơ sở dữ liệu vì nó hiện đang được sử dụng SQL Server 3702

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

Không thể xóa cơ sở dữ liệu vì nó hiện đang được sử dụng SQL Server 3702

Không thể xóa cơ sở dữ liệu vì nó hiện đang được sử dụng SQL Server 3702

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

Lỗi này xảy ra khi Máy chủ thích ứng cố gắng loại bỏ cơ sở dữ liệu, bảng người dùng, quy trình, quy tắc, mặc định, trình kích hoạt hoặc dạng xem hiện đang được sử dụng

Lỗi 3702 có thể xảy ra trong quá trình

  • Một lệnh thả như thả cơ sở dữ liệu, thả bảng, bỏ thủ tục hoặc bỏ quy tắc

  • Lệnh dbcc dbrepair (database_name, dropdb)

Lỗi 3702 có thể xảy ra vì những lý do sau

  • Đối tượng bạn đang cố loại bỏ đang được sử dụng

  • Quá trình sử dụng đối tượng bị chấm dứt bất thường

  • Tham nhũng dữ liệu đã xảy ra

  • Đã xảy ra sự cố Máy chủ thích ứng

Hoạt động

Sử dụng sp_who để xác định xem cơ sở dữ liệu hoặc tên đối tượng trong lệnh thả của bạn hiện đang được sử dụng. Nếu nó đang được sử dụng, hãy liên hệ với người dùng được hiển thị trong đầu ra sp_who

Nếu quá trình sử dụng đối tượng bị chấm dứt bất thường (ví dụ: với lệnh hủy hệ điều hành), đối tượng có thể chưa bị xóa hoàn toàn khỏi bảng hệ thống Máy chủ thích ứng. Quá trình sẽ vẫn vô hình trong khi giữ cho đối tượng mở và sử dụng. Điều này ngăn lệnh thả thành công. Trong trường hợp này, tắt và khởi động lại Adaptive Server sẽ xóa lỗi 3702. Sau khi bạn khởi động lại máy chủ thích ứng, hãy chạy dbcc checkcatalog để xác định xem có xảy ra hỏng hóc hay không

Nếu bạn đang cố xóa cơ sở dữ liệu chứa khóa hiện được dùng để mã hóa cột trong cơ sở dữ liệu khác, lệnh sẽ không thành công. Trước khi xóa cơ sở dữ liệu chứa các khóa mã hóa, trước tiên bạn phải xóa mã hóa hoặc xóa cơ sở dữ liệu chứa các cột được mã hóa

Nếu lỗi 3702 vẫn tiếp diễn, hãy gọi cho bộ phận Hỗ trợ Kỹ thuật của Sybase

Thông tin thêm

Trước khi gọi cho bộ phận Hỗ trợ Kỹ thuật của Sybase, hãy chuẩn bị sẵn thông tin được liệt kê trong "Báo cáo lỗi", bao gồm đầu ra của dbcc checkdb, dbcc checkcatalog và dbcc checkalloc cho cơ sở dữ liệu chứa đối tượng có tên trong thông báo lỗi

Không thể xóa cơ sở dữ liệu vì nó đang được sử dụng để sao chép?

Bắt đầu bằng cách nhấp chuột phải vào Bản sao trong Object Explorer và chọn Thuộc tính nhà xuất bản. Trong cửa sổ Thuộc tính nhà xuất bản, chọn trang Cơ sở dữ liệu xuất bản. Tại đây bạn có thể bỏ chọn cơ sở dữ liệu mà bạn đang cố xóa. Khi bạn đã lưu cái này, bạn sẽ có thể xóa cơ sở dữ liệu của mình

Cơ sở dữ liệu nào không thể bị hủy?

Không thể xóa cơ sở dữ liệu hệ thống .

Mệnh đề nào được sử dụng để loại bỏ cơ sở dữ liệu nếu nó đã tồn tại?

Câu lệnh DROP DATABASE cho phép bạn xóa một hoặc nhiều cơ sở dữ liệu bằng cú pháp sau. DROP DATABASE [ IF EXISTS ] database_name [,database_name2, ]; Không thể bỏ cơ sở dữ liệu "database_name" vì nó hiện đang được sử dụng.

Sp_who trong SQL Server là gì?

Cung cấp thông tin về người dùng, phiên và quy trình hiện tại trong phiên bản của Công cụ cơ sở dữ liệu Microsoft SQL Server . Thông tin có thể được lọc để chỉ trả về những quy trình không nhàn rỗi, thuộc về một người dùng cụ thể hoặc thuộc về một phiên cụ thể.