none
impossibile cancellare o modificare una specifica riga RRS feed

  • Domanda

  • Ciao a tutti,

    su un db sql gestito con SQL Management Studio 2008 R2, ho una tabella per gestire una programmazione televisiva di questo tipo:

    Il campo ID è una chiave primaria a cui è associato un indice univoco cluster creato automaticamente alla creazione della tabella.

    Il problema è che non posso ne modificare ne cancellare la riga con ID=2. Su tutte le altre righe invece posso fare queste operazioni, nonostante siano righe con informazioni simili.

    Qualcuno saprebbe darmi qualche consiglio per poter risolvere questo problema?

    Grazie in anticipo.

    martedì 29 aprile 2014 15:04

Risposte

  • Il problema era dovuto ad un processo che stava bloccando la tabella.

    Ho risolto il problema individuando prima il SPID che bloccava la tabella con la seguente query:

    select distinct object_name(a.rsc_objid), a.req_spid, b.loginame 
    from master.dbo.syslockinfo a (nolock) join 
    master.dbo.sysprocesses b (nolock) on a.req_spid=b.spid 
    where object_name(a.rsc_objid) is not null
    order by object_name(a.rsc_objid)

    e a seguire ho individuato il processo con:

    sp_who2 <SPID>

    Una volta killato il processo, tutto è tornato alla normalità.

    Grazie a tutti

    • Contrassegnato come risposta Stefano Fox giovedì 1 maggio 2014 13:10
    giovedì 1 maggio 2014 13:06

Tutte le risposte

  • se tenti la modifica quale errore ti restituisce sql server ?

    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    martedì 29 aprile 2014 15:47
    Moderatore
  • mi da il timeout.

    Ho provato a togliere il timeout ma dopo 1 ora che girava la delete su una sola riga ho fermato la query.

    martedì 29 aprile 2014 15:50
  • scusa ma nel tuo primo post c'è scritto: "ho una tabella per gestire una programmazione televisiva di questo tipo:" ... e poi non c'è nulla.

    puoi aggiungere quello che manca ?


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    mercoledì 30 aprile 2014 07:49
    Moderatore
  • Oltre alla struttura della tabella in sé, postaci anche le dipendenze da cui e verso cui la tabella è inclusa.

    Inoltre, indicaci se si tratta di un ambiente di produzione, il tipo di attività (in termini di traffico anche indicativamente) che hai su quel database.

    In aggiunta, facci sapere se ci sono ON CASCADE DELETE su eventuali foreign key.. Anche perché sembra proprio che tu stia cercando di cancellare un record che è bloccato a causa di attività su di esso o su di una dipendenza.

    ciao


    Alessandro Alpi SQL Server MVP

    mercoledì 30 aprile 2014 08:10
    Moderatore
  • In aggiunta, facci sapere se ci sono ON CASCADE DELETE su eventuali foreign key.. Anche perché sembra proprio che tu stia cercando di cancellare un record che è bloccato a causa di attività su di esso o su di una dipendenza.

    Scusate non mi ero accorto che non ha pubblicato la tabella.

    Comunque come faccio a verificare se ci sono ON CASCADE DELETE?
    mercoledì 30 aprile 2014 17:02
  • controlla le relazioni con le altre tabelle e verifica che nella clausola di ON DELETE non ci sia impostato CASCADE. Ecco come controllarlo.


    Alessandro Alpi SQL Server MVP


    mercoledì 30 aprile 2014 23:10
    Moderatore
  • Il problema era dovuto ad un processo che stava bloccando la tabella.

    Ho risolto il problema individuando prima il SPID che bloccava la tabella con la seguente query:

    select distinct object_name(a.rsc_objid), a.req_spid, b.loginame 
    from master.dbo.syslockinfo a (nolock) join 
    master.dbo.sysprocesses b (nolock) on a.req_spid=b.spid 
    where object_name(a.rsc_objid) is not null
    order by object_name(a.rsc_objid)

    e a seguire ho individuato il processo con:

    sp_who2 <SPID>

    Una volta killato il processo, tutto è tornato alla normalità.

    Grazie a tutti

    • Contrassegnato come risposta Stefano Fox giovedì 1 maggio 2014 13:10
    giovedì 1 maggio 2014 13:06