Убить процесс MS SQL из подготовленного заявления Java? - PullRequest
4 голосов
/ 03 мая 2011

Я пытаюсь убить процесс MS SQL Server (8) с подготовленным оператором в Java. Но я всегда получаю исключение: com.microsoft.sqlserver.jdbc.SQLServerException: строка 1: неправильный синтаксис рядом с'@P0'.

Есть идеи?

public void killBlockingProcess(int spid)   {
    PreparedStatement ps = null;
    try {
        ps = connection.prepareStatement("kill ?");
        ps.setInt(1, spid);
        boolean res=ps.execute();
    } 
    catch (Exception ex) {
        logger.error(this + ",killBlockingProcess: " + ex.getMessage());
    }
    finally
    {
        try {ps.close(); } catch (Exception exp){}
    }
}

1 Ответ

2 голосов
/ 03 мая 2011

kill принимает только цифры, а не параметры.Запустите:

"kill " + spid

Против соединения и должно работать.В качестве альтернативы, позвольте SQL расширить параметр:

"declare @query varchar(max)
set @query = 'kill ' + ?
exec (@query)"
...