5

içinde yabancı anahtarlar atıfta bulunmadan kümelenmemiş birincil anahtarına nasıl dönüştürülür GUID sütununda kümelenmiş birincil anahtar oluşturma konusunda hata yaptım. Tanımlı yabancı anahtarlara sahip tabloya başvuran birçok tablo vardır. Tablo boyutu önemli değil.Kümelenmiş birincil anahtar, SQL Server 2005

Kümelenmiş kümelemeden kümelenmemiş kümelere, herhangi bir yabancı anahtarı veya birincil anahtar kısıtlamasını manuel olarak düşürmeden ve yeniden oluşturmadan dönüştürmek istiyorum.

MS SQL2005'de bunu başarmak mümkün mü ve eğer evet?

Evet ise, ONLINE (db down time olmadan) elde etmek mümkün mü?

cevap

3

İlk önce benzersiz kümelenmemiş NC dizinini oluşturmayı ve kümelenmiş PK'yi bırakmayı deneyebilirsiniz. FK bu diğer endeksi tanıyacaktır (fakat hiç bir zaman denememiş olabilir).

Kümelenmiş PK'yi bırakmak için ALTER TABLE'ı çalıştırdığınızda, ONLINE seçeneğini kullanın. Ancak, yalnızca Enterprise sürümünde kullanılabilir.

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

ADD CONSTRAINT biti için ONLINE kullanamazsınız.

Temelde, seçenekleriniz

+2

... engelleme, ya da ilk başka tablo oluşturma ve üzerinden veri taşımadan sınırlıdır Ben "denemek" sözcüğü ... – alpav

+0

@alpav olmadan bir cevap almak isterdim: ne yazık ki, Muhtemelen sadece bırak, düzelt, yeniden yarat. Ve bir dahaki sefere hatırlamaya çalışın :-) 200 milyon satırlık bir tabloyla deneyin: Bu acı verici ... – gbn

+2

FK'ler başka bir dizini tanımıyor. Başka bir benzersiz kısıtlama oluşturduktan ve ALTER TABLE Table2 NOCHECK CONSTRAINT FK_Table2_Table1 ile yabancı anahtar kısıtlamalarını devre dışı bıraktıktan sonra bile PK sınırlamasını düşürmeye çalıştığımda, "The constraint" PK_Table1 'tablosuna' Tablo2 ', yabancı anahtar kısıtlaması' FK_Table2_Table1 'referans alınarak başvuruyor. Sadece FK'ler düşüyor. – alpav