none
Tabelle SYSPROCESSES RRS feed

  • Domanda

  • Buonasera,

    ho la necessità di verificare se un programma è già in esecuzione sul DB da un'altro utente, e si pensava di interrogare la tab. SYSPROCESSES per il processo che si vuole testare.

    Il problema è che l'utente non ha i diritti per interrogare le tabelle di sistema, volevo sapere se c'è modo di cerare una regola o una vista definita dall'utente, in modo da interrogare SOLO la tabella SYSPROCESSES senza dare i permessi a tutti gli utenti di lettura/scrittura di tutte le tabelle di sistema.

    Grazie 

    PV

    giovedì 24 novembre 2016 16:00

Risposte

  • Ciao,

    la tabella SYSPROCESSES è presente in SQL Server per retrocompatibilità.

    Per non avere problemi in futuro, ti consiglierei di interrogare le system views che sono associate a sysprocesses, ovvero sys.dm_exec_connections , sys.dm_exec_sessions e  sys.dm_exec_requests .

    Puoi chiaramente decidere quali campi prendere in considerazione, se li specifichi possiamo suggerirti come metterle in join per ottenere i risultati desiderati.

    La permission richiesta per vedere le sessioni anche di altri utenti è VIEW SERVER STATE.

    GRANT VIEW SERVER STATE TO Utente;

    In questo modo l'intera sysprocesses sarà disponibile. Se intendi poi rimuovere le colonne non necessarie, e creare una vista, puoi farlo, es.

    CREATE VIEW processi
    AS 
    SELECT cpu,memusage,physical_io, cmd
    FROM sysprocesses;
    
    SELECT * FROM processi;

    Fai sapere,

    Luca


    giovedì 24 novembre 2016 18:04