es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo ejecutar un conjunto de resultados de SQL desde una variable de tabla

Tengo una consulta simple

SELECCIONAR 'kill ' + '''' + session<em>id + '''' FROM sys.dm</em>pdw<em>espera
donde nombre de objeto como 'dw_prd.F%' 



unión





SELECCIONAR 'kill ' + '''' + sessionid + '''' FROM sys.dmpdwespera
donde nombre de objeto como 'dw_prd.D%' 

Este es el resultado establecido

ingresar descripción de imagen aquí

Quiero ejecutar el conjunto de resultados tal cual, es decir, todos los kills deben ejecutarse. Intenté convertir esto en una variable y ejecutarlo, pero no se ejecuta

¿Cuál es la forma más fácil de ejecutar este conjunto de resultados?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de ejecutar el conjunto de resultados es copiar todo el conjunto de resultados y pegarlo en una nueva ventana de consulta en SQL Server Management Studio (SSMS). Luego, ejecutar todo el script para ejecutar todos los comandos de kill.

    Otra forma es utilizar SQL dinámico mediante un bucle a través del conjunto de resultados y ejecutar cada declaración de kill una por una. Aquí tienes un ejemplo de cómo puedes lograr esto:

    DECLARE @killCmd VARCHAR(MAX)
    
    DECLARE cursorName CURSOR FOR 
    SELECT command FROM (
        SELECT 'kill ' + session_id AS command FROM sys.dm_pdw_waits WHERE object_name LIKE 'dw_prd.F%'
        UNION 
        SELECT 'kill ' + session_id AS command FROM sys.dm_pdw_waits WHERE object_name LIKE 'dw_prd.D%'
    ) cmd
    
    OPEN cursorName
    
    FETCH NEXT FROM cursorName INTO @killCmd
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
        EXEC (@killCmd)
        FETCH NEXT FROM cursorName INTO @killCmd
    END
    
    CLOSE cursorName
    DEALLOCATE cursorName
    

    Este script crea un cursor que recorre el conjunto de resultados y ejecuta cada comando de kill utilizando SQL dinámico. Ten en cuenta que este método puede no ser la forma más eficiente o segura de matar sesiones y solo debe usarse con precaución.

Comments are closed.