SQL Server Kill Spid

SQL Server Kill Spid
O ID do processo SPID ou SQL Server é um valor exclusivo atribuído a uma sessão ao se conectar a uma instância do SQL Server. Por exemplo, se você usar uma ferramenta como o JetBrains Data Grip para se conectar ao servidor SQL, o servidor SQL atribui um ID de sessão exclusivo que contém espaço e escopo independentes de memória. Isso significa que o SPID não pode interagir com outros espides no servidor.

O SQL Server usa valores de SPID abaixo de 50 para processos de servidor interno, enquanto qualquer valor acima de 51 (inclusive) é atribuído aos processos do usuário.

Neste guia, você entenderá como obter valores de SPID no SQL Server e como você pode matar uma transação usando seu SPID.

SQL Server Show Spid

No SQL Server, existem várias maneiras de obter o SPID dos processos em execução. Este guia analisará o mais comum e fácil de usar.

sp_who (transact-sql)

O SP_WHO é um procedimento auxiliar que permite visualizar informações do usuário, sessões e processos de instância do SQL Server. Usando este procedimento, você pode filtrar informações específicas, como o nome de usuário e o valor SPID.

A sintaxe é como mostrado:

sp_who [[@Loginame =] 'Login' | ID da sessão | 'ATIVO' ]

O login refere -se ao SysName que identifica um processo para um login específico.

O ID da sessão é o valor do SPID para um processo específico conectado ao servidor SQL.

Exemplo de uso

Os seguintes comandos mostram como usar o procedimento SP_WHO no SQL Server.

Mostre todos os processos atuais

Para exibir todos os processos atuais, use a consulta como mostrado:

Use mestre;
IR
Exec sp_who;
IR

A consulta acima deve retornar as informações com colunas como SPID, ECID, Status, Loginame e mais.

Mostrar processo para um usuário específico

Para obter os processos associados a um usuário específico, podemos especificar o nome de usuário na consulta, como mostrado no exemplo abaixo:

Use mestre;
IR
Exec sp_who 'csalem \ cs';
IR

O comando deve retornar as informações do processo sobre o login do conjunto. Um exemplo de saída é como mostrado:

@@ Spid

Outro método que você pode usar para obter o SPID de um processo é usar a função @@ SPID. Esta função de configuração retorna o ID da sessão do processo atual.

Exemplo de uso

O exemplo a seguir mostra como usar o @@ SPID para buscar informações sobre um processo específico.

Selecione @@ Spid como 'ID',
System_user como 'login_name',
Usuário como 'nome de usuário'

A consulta retorna o Spid, Loginame e o nome de usuário. Exemplo de saída é como mostrado:

Monitor de atividade

Você também pode usar um método gráfico para visualizar o valor de ID da sessão para um processo específico. Inicie o MS SQL Server Management Studio e clique com o botão direito do mouse na instância do SQL Server. Monitor de atividade aberta.

Clique na guia Processo para mostrar SPID, Login, bancos de dados e mais informações. As informações exibidas pelo monitor de atividades são mostradas:

SQL Server Kill Spid

Às vezes, você pode encontrar uma instância específica com lento, bloqueando outros processos ou consumindo recursos do sistema. Você pode encerrar o processo usando seu SPID.

O comando Kill Spid permite especificar um valor específico de Spid e encerrar o processo. Depois de ligar para o comando, o SQL Server executará um processo Rollback (Desfazer Alterações); Portanto, pode levar algum tempo para rescindir um processo extenso.

A seguir, mostra a sintaxe do comando Kill Spid:

Mate ID da sessão [com statusonly] | Uow [com statusonly | Comprometimento | Rollback]

Exemplo de uso

Passe o valor de ID da sessão para usar o comando Kill Spid (aprenda a obter o valor do SPID acima).

Matar 90;

O comando acima deve interromper o processo especificado.

Para obter o progresso da terminação do processo, você pode usar o argumento com Statissonly, como mostrado:

Mate 84 com statusonly;

O comando acima deve retornar o progresso como:

MSG 6120, Nível 16, Estado 1, linha 1
O relatório de status não pode ser obtido. Operação de reversão para o ID do processo 84 não está em andamento.

O exemplo abaixo mostra como rescindir um backup de banco de dados em execução usando o comando Kill Spid.

Comece o backup como:

banco de dados de backup [wideworldimporters]
Para disco = n'c: \ arquivos de programas \ Microsoft SQL Server \ msSQL15.Mssqlserver \ msSql \ backup \ wwi_backup.bak '
Com noformat, nome = n '\ wwi_backup', compressão, estatísticas = 10;
IR

Usando o comando Kill Spid, encerre o processo de backup.

Conclusão

Neste artigo, você aprendeu a trabalhar com os IDs da sessão do SQL Server. Vários métodos para buscar o valor do SPID e encerrar um processo usando o valor do SPID.