Как убивать (kill) связь в SQL Server с query?

Я пробую удалять связь в базу данных, сочетаю команду kill с одним query что консультируется session_id с таблицы dm_exec_sessions просачиваясь по имени моей базы данных. Согласно документации Microsoft команда kill у него есть следующий синтаксис:

KILL session_id;

Это - то, что я попробовал:

kill select s.session_id FROM sys.dm_exec_sessions AS s where s.database_id 
in (select db.database_id from sys.databases db where db.name like 'dbname');

Но у меня появляется следующая ошибка:

Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'select'.

Я благодарен за Вашу помощь, привет!

0
задан 08.11.2019, 01:23
2 ответа

В край проблемы синтаксиса, что ты делаешь, состоит в том, чтобы пробовать удалять все существующие сеансы и это может перевозить проблемы.

DeberГ-Схвати искать session_id, которые тебе интересно, и делать один kill @session_id, так как kill надеется, что стоимость взбирается на целое число (int).

, Если ты нуждаешься в том, чтобы удалить mГЎs процесса, deberГЎs сделать это с курсором, который удалял бы один в один каждые session_id.

2
ответ дан 01.12.2019, 12:18
  • 1
    Я понимаю твой ответ и тебе благодарен, привет! – Brandon Castillo 11.11.2019, 22:22

Если ты хочешь убить одну sesiГіn, ты должен делать, как explicГі Роджер, но если ты хочешь убить все связи в базу данных, в особенности deberГ-схвати выполнять консультацию и вооружать решения для каждого процесса.

Declare @StrSQL Varchar(Max)

Select @StrSQL = STRING_AGG( 'kill ' + Cast(sp.spid As Varchar), Char(13) + Char(10) )
From sysprocesses As sp
    Inner Join sys.databases As sd
       On sd.database_id = dbid
Where sd.name = 'NombreDB'
    And sp.spid <> @@SpId
    And sp.kpid = 0

Exec (@StrSQL)
1
ответ дан 01.12.2019, 12:18