none
Rinomino oggetti (sp_rename) ma codice resta "vecchio" RRS feed

  • Domanda

  • Buongiorno,

    per rinominare la vista eseguendo l'istruzione:

    EXECUTE sp_rename N'MiaVecchiaVista', N'MiaNuovaVista', 'OBJECT'

    Dopo di che la vista funziona perfettamente con il nuovo nome facendo query sia da applicativo che da Sql Management.

    Però se utilizzo un programma di comparazione di db (esempio SqlDelta) il codice della vista MiaNuovaVista torna:

    "CREATE VIEW MiaVecchiaVista AS ......"

    Mentre se da Sql Management "richiedo" tramite l'apposita funzinalità il codice delle create mi da giustamente:

    "CREATE VIEW MiaNuovaVista AS ......"

    Immagino che succeda questo perché Sql Management crea al volo lo script mentre nel primo caso il codice venga recuperato direttamente da "dove" Sql Server lo memorizza ed evidentemente il rename non modifica anche questo codice.

    Sapete dirmi se c'è un modo per far si che questo codice memorizzato venga aggiornato???

    PS
    So benissimo che nell'esempio indicato potrei fare il DROP della vecchia vista e CREATE della nuova, ma è appunto un esempio in realta abbiamo dovuto rinominare parecchi oggetti in modo massivo senza per forza conoscerne il codice interno

    PS2
    Succede anche con altri oggetti (trigger, store...) non solo con le viste

    Grazie

    venerdì 19 giugno 2015 07:54

Tutte le risposte

  • Esegui la query seguente:

    SELECT sm.object_id, OBJECT_NAME(sm.object_id) AS object_name, o.type, o.type_desc, sm.definition
    FROM sys.sql_modules AS sm
    JOIN sys.objects AS o ON sm.object_id = o.object_id
    ORDER BY o.type

    Per le viste, in object_name trovi il nuovo nome della vista e in definition lo script originario di creazione.

    Le tabella di sistema, però, non sono aggiornabili manualmente dall'utente.


    vibi6

    sabato 20 giugno 2015 22:40