Desidero chiudere le connessioni esistenti a un MS SQL Server in modo che sia possibile eseguire un ripristino su tale database in modo programmatico.Come chiudere le connessioni esistenti a un DB
risposta
Questo dovrebbe staccare tutti gli altri, e vi lascio come l'unico utente:
alter database YourDb set single_user with rollback immediate
Nota: Non dimenticare
alter database YourDb set MULTI_USER
dopo aver finito!
Non dimenticare "ALTER DATABASE YourDb SET MULTI_USER' dopo aver finito! –
trovato qui: 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
grazie, ma questa query ha richiesto più di 2 minuti l'ho appena cancellato – Haz
IMHO questo è un modo inutilmente complesso e inefficace per farlo. @ La risposta di Andomar realizza la stessa cosa con molto meno sforzo e con un migliore controllo della forza bruta sulle transazioni in volo. Inoltre, non acquisisce gli utenti che hanno un database diverso segnalato nella vista * sysprocesses deprecata * ma mantengono ancora blocchi nel database corrente. –
Grazie Aaron per il mio shaming settimanale. Uccide il processo, ma certamente non elegantemente. – Vinnie
Soluzione perfetta fornita da 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
è piuttosto lungo, ma anche l'unica soluzione ha funzionato per me! grazie – curiousBoy
in Restore Wizard click "stretti legami esistenti al database di destinazione"
in Disconnetti Database guidata click "goccia di connessione" articolo.
Questa opzione non è sempre disponibile – Squazz
È possibile utilizzare il cursore del genere:
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
ho scritto che nel mio blog qui: http://www.pigeonsql.com/single-post/2016/12/13/Kill-all-connections-on-DB-by-Cursor
- 1. Android quando dovrei aprire e chiudere le connessioni db?
- 2. Come faccio a rendere SQLAlchemy Flask riutilizzare le connessioni db?
- 3. Winsock - interrompe l'accettazione di nuove connessioni, ma continua a comunicare con le connessioni esistenti
- 4. Puoi chiudere tutte le connessioni a MongoDB dalla Mongo Shell?
- 5. Come uccidere le connessioni MySQL
- 6. Con quale frequenza devo chiudere le connessioni del database?
- 7. Come Zend DB gestisce le connessioni del database
- 8. come chiudere le connessioni sottostanti dopo cattura HttpWebRequest timeout
- 9. Come chiudere automaticamente le connessioni inattive in PostgreSQL?
- 10. connessione DB condivisa vs connessioni DB private
- 11. Determinare se le connessioni esistenti utilizzano TCP KeepAlive in Windows
- 12. Come si chiudono tutte le connessioni a un database locale in SQL Server Management Studio?
- 13. Unicorno non chiude connessioni DB
- 14. Devo chiudere le connessioni scadute in Apache HTTPAsyncClient?
- 15. Chiudere le connessioni JDBC solo nel blocco finally?
- 16. close() non chiudere mai le connessioni in pymongo?
- 17. npgsql Leaking Postgres Collegamenti DB: modo per monitorare le connessioni?
- 18. mysql: vedi tutte le connessioni aperte a un determinato database?
- 19. Come posso impedire a Oracle SQL Developer di chiudere la connessione DB?
- 20. Pool di connessioni DB simultanee in Haskell
- 21. WCF, BasicHttpBinding: Stop nuove connessioni, ma consente connessioni esistenti di continuare
- 22. Amazon Dynamo DB max connessioni client?
- 23. Configurare connessioni multi DB su ZF2
- 24. Le connessioni MongoDB continuano ad aumentare
- 25. Come aumentare le connessioni massime in postgres?
- 26. come chiudere le schede IE8
- 27. Come impostare nome_applicazione per le connessioni Postgres?
- 28. L'attività Django filettata non gestisce automaticamente le transazioni o le connessioni db?
- 29. Mongoose.js crea connessioni multiple a MongoDB da un connect() chiamare
- 30. Quando ActiveRecord stabilisce le connessioni?
Eventuali duplicati: [? Come si fa a uccidere tutti i collegamenti attuali per un database SQL Server 2005] (http://stackoverflow.com/questions/11620/how-do-you-kill-all-corrent-connections-to-a-sql-server-2005-database) – zimdanen