none
Modificare una colonna di una tabella RRS feed

  • Domanda

  • Ciao a tutti,

    il post sembrerà banale ma provo a spiegarvi il problema......

    Ho la necessità di togliere l'identity su una tabella che contiene circa 13 milioni di Dati per riportare alcuni dati che avevo spostato in una tabella di archivio, devo effettuare questa operazione e mantenere l'id che avevo spostato nell'altra tabella, alla fine di tale operazione devo rimettere l'identity sulla colonna PK, ho provato ad effettuare tale operazione tramite il design della tabella ma và in timeout......Come posso fae?????

    Grazie anticipatamente

    Roberto

    mercoledì 28 settembre 2011 10:39

Tutte le risposte

  • Ho la necessità di togliere l'identity su una tabella che contiene circa 13 milioni di Dati per riportare alcuni dati che avevo spostato in una tabella di archivio, devo effettuare questa operazione e mantenere l'id che avevo spostato nell'altra tabella, alla fine di tale operazione devo rimettere l'identity sulla colonna PK, ho provato ad effettuare tale operazione tramite il design della tabella ma và in timeout......Come posso fae?????

    Grazie anticipatamente


    Ciao Roberto,

    Non mi è molto chiaro quello che stai cercando di fare, ma una cosa certa che posso dirti è che non puoi aggiungere/rimuovere la proprietà IDENTITY ad una colonna. L'unico modo è quello di eliminare/riaggiungere una colonna con proprietà IDENTITY.

    Se esegui questa attività dal designer di SSMS, lanciando una sessione di Profiler noterai che dietro le quinte SSMS crea una tabella Tmp_NomeTabella con la nuova colonna IDENTITY, vi copia tutte le righe dalla tabella originale, rimuove la tabella originale ed infine rinomina la tabella Tmp_NomeTabella in NomeTabella mediante la stored procedure di sistema sp_rename.

    Utilizzando il comando ALTER TABLE per aggiungere la colonna IDENTITY questa cosa non avviene:

     

    USE tempdb;
    
    CREATE TABLE dbo.Students(
    FirstName varchar(10) NOT NULL,
    LastName varchar(10) NOT NULL
    );
    
    INSERT dbo.Students VALUES
    ('Lorenzo', 'Benaglia')
    , ('Luca', 'Bianchi')
    , ('Andrea', 'Montanari')
    , ('Marcello', 'Poletti');
    
    ALTER TABLE dbo.Students
    ADD StudentID int NOT NULL IDENTITY;
    
    SELECT *
    FROM dbo.Students;
    
    /* Output:
    
    FirstName LastName StudentID
    ---------- ---------- -----------
    Lorenzo Benaglia 1
    Luca Bianchi 2
    Andrea Montanari 3
    Marcello Poletti 4
    
    (4 row(s) affected)
    
    */
    
    DROP TABLE dbo.Students;
    

    Ciao!

     


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.technet.microsoft.com/Forums/it-IT/sqlserverit
    mercoledì 28 settembre 2011 11:47
    Moderatore