Tôi muốn đóng kết nối hiện tại với Máy chủ MS SQL để tôi có thể thực hiện khôi phục trên cơ sở dữ liệu đó theo chương trình.Cách đóng các kết nối hiện có thành DB
Trả lời
này nên ngắt kết nối tất cả mọi người khác, và để lại cho bạn như là người dùng chỉ:
alter database YourDb set single_user with rollback immediate
Lưu ý: Đừng quên
alter database YourDb set MULTI_USER
sau khi bạn đã hoàn tất!
Đừng quên 'ALTER DATABASE YourDb SET MULTI_USER' sau khi bạn đã hoàn tất! –
Tìm thấy nó ở đây: http://awesomesql.wordpress.com/2010/02/08/script-to-drop-all-connections-to-a-database/
DECLARE @dbname NVARCHAR(128)
SET @dbname = 'DB name here'
-- db to drop connections
DECLARE @processid INT
SELECT @processid = MIN(spid)
FROM master.dbo.sysprocesses
WHERE dbid = DB_ID(@dbname)
WHILE @processid IS NOT NULL
BEGIN
EXEC ('KILL ' + @processid)
SELECT @processid = MIN(spid)
FROM master.dbo.sysprocesses
WHERE dbid = DB_ID(@dbname)
END
cảm ơn nhưng truy vấn này mất hơn 2 phút để tôi chỉ hủy bỏ nó – Haz
IMHO đây là một cách không cần thiết phức tạp và không hiệu quả để làm điều đó. @ Andomar của câu trả lời hoàn thành điều tương tự với nỗ lực ít hơn nhiều và kiểm soát lực lượng vũ phu tốt hơn trên các giao dịch trong chuyến bay. Nó cũng không nắm bắt những người dùng có một cơ sở dữ liệu khác nhau được báo cáo trong khung nhìn * deprecated * sysprocesses nhưng vẫn giữ các khóa trên cơ sở dữ liệu hiện tại. –
Cảm ơn Aaron vì sự xấu hổ hàng tuần của tôi. Nó giết chết quá trình, nhưng chắc chắn không phải thanh lịch. – Vinnie
giải pháp hoàn hảo được cung cấp bởi Stev.org: http://www.stev.org/post/2011/03/01/MS-SQL-Kill-connections-by-host.aspx
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KillConnectionsHost]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[KillConnectionsHost]
GO
/****** Object: StoredProcedure [dbo].[KillConnectionsHost] Script Date: 10/26/2012 13:59:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KillConnectionsHost] @hostname varchar(MAX)
AS
DECLARE @spid int
DECLARE @sql varchar(MAX)
DECLARE cur CURSOR FOR
SELECT spid FROM sys.sysprocesses P
JOIN sys.sysdatabases D ON (D.dbid = P.dbid)
JOIN sys.sysusers U ON (P.uid = U.uid)
WHERE hostname = @hostname AND hostname != ''
AND P.spid != @@SPID
OPEN cur
FETCH NEXT FROM cur
INTO @spid
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT CONVERT(varchar, @spid)
SET @sql = 'KILL ' + RTRIM(@spid)
PRINT @sql
EXEC(@sql)
FETCH NEXT FROM cur
INTO @spid
END
CLOSE cur
DEALLOCATE cur
GO
nó dài, nhưng cũng là giải pháp duy nhất làm việc cho tôi! thx – curiousBoy
trong khôi phục thuật sĩ nhấp chuột "gần kết nối hiện có cơ sở dữ liệu điểm đến"
trong Detach Database Wizard nhấp chuột "Thả kết nối" mục.
Tùy chọn này không phải lúc nào cũng khả dụng – Squazz
Bạn có thể dùng con trỏ như thế:
USE master
GO
DECLARE @SQL AS VARCHAR(255)
DECLARE @SPID AS SMALLINT
DECLARE @Database AS VARCHAR(500)
SET @Database = 'AdventureWorks2016CTP3'
DECLARE Murderer CURSOR FOR
SELECT spid FROM sys.sysprocesses WHERE DB_NAME(dbid) = @Database
OPEN Murderer
FETCH NEXT FROM Murderer INTO @SPID
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'Kill ' + CAST(@SPID AS VARCHAR(10)) + ';'
EXEC (@SQL)
PRINT ' Process ' + CAST(@SPID AS VARCHAR(10)) +' has been killed'
FETCH NEXT FROM Murderer INTO @SPID
END
CLOSE Murderer
DEALLOCATE Murderer
tôi đã viết về điều đó trong blog của tôi ở đây: http://www.pigeonsql.com/single-post/2016/12/13/Kill-all-connections-on-DB-by-Cursor
- 1. NIO - Phát hiện kết nối đã đóng
- 2. ODP.net có đóng con trỏ khi kết nối đóng không?
- 3. Chỉ đọc các chuỗi kết nối DB
- 4. MSDeploy không thành công với "kết nối hiện có bị đóng bởi máy chủ từ xa"
- 5. Winsock - ngừng chấp nhận các kết nối mới nhưng vẫn giữ kết nối với các kết nối hiện có
- 6. Phát hiện khi CodeIgniter không kết nối được với Db
- 7. Làm thế nào tôi có thể giữ cho Oracle SQL Developer đóng kết nối DB?
- 8. ResultSet không đóng khi kết nối đóng?
- 9. Số kết nối DB mở
- 10. Node.js MongoDB đóng kết nối
- 11. Kết nối đóng PDO
- 12. Cách đóng kết nối Smtp trong SwiftMailer
- 13. Cách đóng kết nối TCP bằng cổng?
- 14. SqlCommand.Dispose có đóng kết nối không?
- 15. Socket.io: Cách xử lý các kết nối đóng?
- 16. npgsql Rò rỉ Postgres DB Kết nối: Cách để theo dõi kết nối?
- 17. MongoDB: kiểm tra kết nối với DB
- 18. Gevent-Websocket Phát hiện kết nối đã đóng
- 19. Làm thế nào để đếm các kết nối db mở?
- 20. Android khi nào tôi nên mở và đóng kết nối db?
- 21. InvalidOperationException Kết nối không được đóng. Trạng thái hiện tại của kết nối đang mở
- 22. Khung thực thể đa luồng: Kết nối không được đóng. Trạng thái hiện tại của kết nối đang kết nối
- 23. pgAdmin - Chia sẻ các Định nghĩa Kết nối DB
- 24. psycopg2 với bình, khi đóng kết nối
- 25. Nơi kết nối với DB trong MVC
- 26. cách kết nối với Firebird DB trên android
- 27. Làm cách nào để thực hiện truy vấn khi kết nối DB trong Rails?
- 28. Nhiều DB kết nối trong đường ray
- 29. Sự cố không đóng kết nối db khi đang gỡ lỗi?
- 30. Các Network Adapter không thể thiết lập kết nối khi kết nối với Oracle DB
có thể trùng lặp: [? Làm thế nào để bạn giết tất cả các kết nối hiện tại với một SQL Server 2005 cơ sở dữ liệu] (http://stackoverflow.com/questions/11620/how-do-you-kill-all-current-connections-to-a-sql-server-2005-database) – zimdanen