5

Ho commesso errori durante la creazione della chiave primaria cluster sulla colonna GUID. Ci sono molte tabelle che fanno riferimento a quella tabella con chiavi esterne definite. La dimensione della tabella non è significativa.Come convertire la chiave primaria cluster in non cluster senza rilasciare le chiavi esterne di riferimento in SQL Server 2005

Mi piacerebbe convertirlo da cluster a non cluster senza abbandonare e ricreare manualmente alcuna chiave esterna o anche il vincolo di chiave primaria.

È possibile ottenere ciò in MS SQL2005 e come se sì?

E 'possibile raggiungere quello ONLINE (senza tempo di ritardo db) se sì?

risposta

3

Si potrebbe provare a creare prima l'indice NC non cluster unico, quindi rilasciare il PK in cluster. L'FK dovrebbe riconoscere questo altro indice (ma potrebbe non farlo: mai provato).

Quando si esegue ALTER TABLE per eliminare il PK in cluster, utilizzare l'opzione ONLINE. Tuttavia, è disponibile solo nella versione Enterprise.

ALTER TABLE Mytable DROP CONSTRAINT PK_Mytable WITH (ONLINE = ON) 

Non è possibile utilizzare ONLINE per il bit ADD CONSTRAINT.

In sostanza, le opzioni sono limitate senza bloccare, o la creazione di un altro tavolo prima e lo spostamento dei dati su ...

+2

Vorrei poter ottenere una risposta senza parola "provare" ... – alpav

+0

@alpav: purtroppo, Probabilmente dovrei lasciar perdere, sistemare, ricreare. E prova a ricordare per la prossima volta :-) Provalo con una tabella di 200 milioni di righe: è doloroso ... – gbn

+2

Gli FK non riconoscono un altro indice. Quando provo a eliminare il vincolo PK anche dopo aver creato un altro vincolo univoco e disabilitato il vincolo di chiave esterna con ALTER TABLE Table2 NOCHECK CONSTRAINT FK_Table2_Table1, si lamenta che "Il vincolo 'PK_Table1' viene referenziato dalla tabella 'Table2', vincolo di chiave esterna 'FK_Table2_Table1' Funziona solo con l'eliminazione di FK. – alpav