Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 Adam
Adam

Cum omori toate conexiunile curente la o baza de date SQL Server 2005?

Vreau să redenumiți o bază de date, dar tot primesc eroarea asta 'n't obține exclusiv de blocare' pe bază de date, care implică există o legătură(s) încă activ.

Cum pot ucide toate conexiunile la baza de date, astfel încât să pot redenumi?

284 2008-08-14T19:54:25+00:00 19
Programare
sql-server-2005
sql-server
Comentarii la întrebare (0)
Soluția
 SQLMenace
SQLMenace
14 august 2008 в 7:56
2008-08-14T19:56:56+00:00
Mai mult
Sursă
Editează
#8415339

A Se Vedea Ucide Toate Conexiunile Active La O Bază De Date.

Motivul pentru care abordarea pe care Adam suggested a câștigat't de lucru este că în momentul în care ești looping peste conexiuni active nou poate fi stabilit, și te'll-e dor de acele. În articol am legat utilizează următoarele abordări care nu au acest dezavantaj:


use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

--do you stuff here 

ALTER DATABASE YourDatabase SET MULTI_USER
376
0
Comentarii (6)
 Adam
Adam
14 august 2008 в 7:57
2008-08-14T19:57:15+00:00
Mai mult
Sursă
Editează
#8415340

Script pentru a realiza acest lucru, înlocuiți 'NUME_BD' cu baza de date pentru a ucide toate conexiunile la:

GO

SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''

Set @DBName = 'DB_NAME'
IF db_id(@DBName) < 4
BEGIN
PRINT &#39;Connections to system databases cannot be killed&#39;
RETURN
END
SELECT @spidstr=coalesce(@spidstr,&#39;,&#39; )+&#39;kill &#39;+convert(varchar, spid)+ &#39;; &#39;
FROM master..sysprocesses WHERE dbid=db_id(@DBName)

IF LEN(@spidstr) > 0
BEGIN
EXEC(@spidstr)
SELECT @ConnKilled = COUNT(1)
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
END
110
0
Comentarii (4)
 btk
btk
12 mai 2010 в 10:40
2010-05-12T10:40:36+00:00
Mai mult
Sursă
Editează
#8415345

Ucide și ucide cu foc:

go

DECLARE @dbname sysname
SET @dbname = &#39;yourdbname&#39;

DECLARE @spid int
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname)
WHILE @spid IS NOT NULL
BEGIN
EXECUTE (&#39;KILL &#39; + @spid)
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) AND spid > @spid
END
53
0
Comentarii (1)
Joseph Daigle
Joseph Daigle
14 august 2008 в 7:58
2008-08-14T19:58:03+00:00
Mai mult
Sursă
Editează
#8415341

Folosind SQL Management Studio Express:

În Object Explorer copac detalia sub Management pentru a "Monitor de Activitate" (dacă nu puteți găsi acolo, apoi click dreapta pe serverul de baze de date și selectați "Monitor de Activitate"). Deschide Activity Monitor, puteți vizualiza toate procesa informatii. Tu ar trebui să fie capabil de a găsi încuietori pentru baza de date te're interesat în și ucide aceste încuietori, care va ucide, de asemenea, conexiunea.

Tu ar trebui să fie capabil de a redenumi după aceea.

27
0
Comentarii (3)
 brendan
brendan
14 august 2008 в 8:00
2008-08-14T20:00:23+00:00
Mai mult
Sursă
Editează
#8415343

Am'am folosit mereu:


ALTER DATABASE NUME_BD SET SINGLE_USER CU REVENIRE IMEDIATĂ 
DU-te 
SP_RENAMEDB 'NUME_BD','DB_NAME_NEW'
Du-te 
ALTER DATABASE DB_NAME_NEW SET MULTI_USER -- set înapoi la multi utilizator 
DU-te 
24
0
Comentarii (1)
santhosh kumar
santhosh kumar
18 iulie 2012 в 8:02
2012-07-18T08:02:36+00:00
Mai mult
Sursă
Editează
#8415356
SET OFFLINE WITH ROLLBACK IMMEDIATE

ALTER DATABASE [Test]
SET ONLINE
21
0
Comentarii (0)
 NJV
NJV
5 ianuarie 2011 в 2:49
2011-01-05T14:49:27+00:00
Mai mult
Sursă
Editează
#8415349

Ia deconectat nevoie de un timp și, uneori, am experimenta unele probleme cu asta..

Cel mai solid mod, în opinia mea:

Detașa Click dreapta DB -> Sarcini -> Detașa... verificați "Drop Conexiuni" Ok

Reatașați Click dreapta Baze de date -> Atașați.. Adauga... -> selectați baza de date, și de a schimba Atașa la Fel de coloana a dorit, numele bazei de date. Ok

14
0
Comentarii (2)
 Talha
Talha
1 februarie 2012 в 9:30
2012-02-01T09:30:22+00:00
Mai mult
Sursă
Editează
#8415352
from master.dbo.sysprocesses p (nolock)
join master..sysdatabases d (nolock) on p.dbid = d.dbid
Where d.[name] = &#39;your db name&#39;

Declare @query nvarchar(max)
--Select * from #temp
Select @query =STUFF((                              
            select &#39;  &#39; + KillCommand from #temp
            FOR XML PATH(&#39;&#39;)),1,1,&#39;&#39;) 
Execute sp_executesql @query 
Drop table #temp

folosi 'master' date și a alerga această interogare, acesta va ucide toate conexiunile active din baza de date.

6
0
Comentarii (1)
 RedWolves
RedWolves
15 august 2008 в 3:52
2008-08-15T15:52:24+00:00
Mai mult
Sursă
Editează
#8415344

Eu de obicei rula în eroare atunci când sunt încercarea de a restabili o bază de date de obicei doar du-te la partea de sus a copac în Management Studio și dați clic dreapta și reporniți serverul de baze de date (pentru ca's pe o mașină de dezvoltare, acest lucru nu ar putea fi idealul în producție). Acest lucru este de a închide toate conexiunile de date.

5
0
Comentarii (1)
John Christensen
John Christensen
14 august 2008 в 7:56
2008-08-14T19:56:56+00:00
Mai mult
Sursă
Editează
#8415338

În MS SQL Server Management Studio pe obiect explorer, click dreapta pe baza de date. În meniul contextual care urmează selecta 'Sarcini -> Ia Deconectat'

4
0
Comentarii (1)
 alirobe
alirobe
12 noiembrie 2010 в 4:30
2010-11-12T04:30:46+00:00
Mai mult
Sursă
Editează
#8415347

Aici's cum sa fiabil acest fel de lucru în MS SQL Server Management Studio 2008 (pot lucra pentru alte versiuni prea):

  1. În Object Explorer Copac, faceți clic dreapta pe root server de baze de date (cu sageata verde), apoi faceți clic pe monitor de activitate.
  2. Deschideți fila procese în activity monitor, selectați 'baze de date' drop-down, și filtru de baza de date pe care doriți.
  3. Faceți clic dreapta pe DB din Object Explorer și începe o 'Sarcini -> Ia Deconectat' sarcina. Las asta care rulează în fundal în timp ce tu...
  4. Închide în condiții de siguranță tot ce poți.
  5. Ucide toate celelalte procese din procesul tab.
  6. Aduce DB înapoi on-line.
  7. Redenumiți DB.
  8. Aduce nou serviciu on-line și punctul în care la noul DB.
4
0
Comentarii (0)
 aikeru
aikeru
18 august 2011 в 10:16
2011-08-18T22:16:24+00:00
Mai mult
Sursă
Editează
#8415350

Un alt "ucide cu foc" abordare este să reporniți serviciul MSSQLSERVER. Îmi place să fac lucrurile de comandă. Lipirea exact în CMD va face: NET STOP MSSQLSERVER & NET START MSSQLSERVER

Sau să deschideți "servicii.msc" și de a găsi "SQL Server (MSSQLSERVER)" și faceți clic dreapta, selectați "restart".

Acest lucru va "sigur, sigur" ucide TOATE conexiunile la TOATE bazele de date care rulează pe acel exemplu.

(Îmi place acest lucru mai bine decât multe abordări care se schimba și de a schimba înapoi de configurare pe server/baza de date)

4
0
Comentarii (3)
Lars Timenes
Lars Timenes
28 decembrie 2011 в 9:18
2011-12-28T09:18:26+00:00
Mai mult
Sursă
Editează
#8415351

Opțiunea lucru pentru mine în acest scenariu este după cum urmează:

  1. Începe "Detașa" operarea în baza de date în cauză. Acesta va deschide o fereastră (în SQL 2005) afișarea conexiunilor active care împiedică acțiunile privind PB.
  2. Ucide conexiuni active, anula desprinde-operațiune.
  3. Baza de date ar trebui să fie acum disponibile pentru restabilirea.
3
0
Comentarii (2)
Sanjay Saxena
Sanjay Saxena
15 noiembrie 2010 в 11:13
2010-11-15T11:13:29+00:00
Mai mult
Sursă
Editează
#8415348

Click dreapta pe numele bazei de date, faceți clic pe Proprietăți pentru a obține fereastra de proprietăți, Deschideți fila Opțiuni și de a schimba "Restricționa Accesul" proprietate de Utilizator Multiple pentru un Singur Utilizator. Când te-a lovit pe butonul OK, se va solicita pentru a închide toate conexiune deschisă, selectați "Da" și vă sunt setate pentru a redenumi baza de date....

2
0
Comentarii (0)
Joseph Sturtevant
Joseph Sturtevant
14 august 2008 в 7:58
2008-08-14T19:58:13+00:00
Mai mult
Sursă
Editează
#8415342

Încercați acest lucru:

SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
2
0
Comentarii (0)
The Coder
The Coder
1 mai 2012 в 3:10
2012-05-01T03:10:41+00:00
Mai mult
Sursă
Editează
#8415353

Aceste n't de lucru pentru mine (SQL2008 Enterprise), de asemenea, am putea't vedea toate procesele care rulează, sau utilizatori conectat la DB. Repornirea server (click Dreapta pe Sql Server Management Studio și alege Restart) mi-a permis să reinstituie nivelul din PB.

2
0
Comentarii (0)
 Ilmar
Ilmar
12 iunie 2012 в 11:04
2012-06-12T11:04:08+00:00
Mai mult
Sursă
Editează
#8415354

Am'm folosind SQL Server 2008 R2, DB mea a fost deja stabilit pentru un singur utilizator și există o legătură interzisă orice acțiune în baza de date. Astfel recomandat SQLMenace's soluție a răspuns cu eroarea. Aici este una care a funcționat în cazul meu.

2
0
Comentarii (0)
Rawitas Krungkaew
Rawitas Krungkaew
7 mai 2015 в 9:42
2015-05-07T09:42:40+00:00
Mai mult
Sursă
Editează
#8415358

Eu folosesc sp_who pentru a obține lista tuturor proces în baza de date. Acest lucru este mai bună pentru că poate doriți să revizuiască care procesul de a ucide.

    SPID bigint,
    Status nvarchar(255),
    Login nvarchar(255),
    HostName nvarchar(255),
    BlkBy nvarchar(255),
    DBName nvarchar(255),
    Command nvarchar(MAX),
    CPUTime bigint,
    DiskIO bigint,
    LastBatch nvarchar(255),
    ProgramName nvarchar(255),
    SPID2 bigint,
    REQUESTID bigint
)

insert into @proc
exec sp_who2

select  *, KillCommand = concat(&#39;kill &#39;, SPID, &#39;;&#39;)
from    @proc

Rezultat Puteți utiliza comanda în KillCommand coloana a ucide procesul vrei.

26      kill 26;
27      kill 27;
28      kill 28;
0
0
Comentarii (0)
mehdi lotfi
mehdi lotfi
2 iunie 2014 в 9:58
2014-06-02T09:58:11+00:00
Mai mult
Sursă
Editează
#8415357

Puteți Utiliza SP_Who comandă și ucide toate procesele care utilizează baza de date și apoi redenumiți baza dumneavoastră de date.

-1
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RO
RU
© Answer-ID 2021
Sursă
https://stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire