Sütun genişliğini değiştirme


39

Bir sütun (nvarchar) genişliğinin arttırılması zorunlu olarak masayı düşürür mü?

Başka bir deyişle, aktif kullanıcılar ile bir üretim ortamında genişlik değiştirilebilir mi?

Boyutun artması durumunda (azalmanın aksine) bunun bir sorun olmayacağını düşündüm.

Yanıtlar:


52

Aşağıdaki gibi bir T-SQL ifadesiyle yapıyorsanız, tablo düşmesi gerçekleşmez ve bunu bir üretim ortamında güvenle yapabilirsiniz:

alter table <table> alter column <column> nvarchar(biggernumber) [not] null

Bunu SSMS Tasarım Tablosu GUI'sini kullanarak yaparsanız, değişikliği uygulamak için hangi betiği kullanmaya karar verdiğine bağlı olacaktır. Bazen verileri geçici bir tabloya ekler, orijinal tabloyu düşürür, o tablonun yeni bir versiyonunu oluşturur ve tekrar yeni tabloya ekler. Ne yapacağını öğrenmenin kolay bir yolu "Script Üret" düğmesini tıklamak ve yürütmeyi planladığı T-SQL'e bakmaktır.


1
"Script Oluştur" düğmesinin bile size senaryoyu göstermeden önce bir tablo bırakmak üzere olduğunuzu söyleyen bir uyarı verdiğini sanıyordum.
Nick Chammas

1
Hatayı fırlatır, ancak komut dosyasıyla birlikte pencerede Tamam'ı (veya çalıştır ya da her neyse) tıklayana kadar aslında komut dosyasını çalıştırmaz. Komut dosyasını kopyalayabilir ve komut dosyasını gösteren pencereyi iptal edebilirsiniz.
mrdenny

ama şamandıradan Ondalık (n, n) 'ya bir değişiklik olduğunu söylüyor mu?
Nishanth Shaan

Tablo çoğaltılırsa bunun etkisi nedir? Abone tablolarının otomatik olarak güncellenmeyeceğini varsayıyorum?
tmwood

18

Bir nvarcharsütunun sütun genişliğini artırmak, bir tablo damlası gerektirmez. Hiçbir ALTER TABLEoperasyon da olmazdı . Tablo veya sütun özelliklerini değiştirirken yapılan kısıtlamalar hakkında ayrıntılar için, ALTER TABLE ifadesinde okuyabilirsiniz .

En alakalı kısımları aşağıdaki dokümantasyondan kopyaladım:

Bir Sütunun Boyutunu Değiştirme

ALTER COLUMN yan tümcesinde sütun veri türü için yeni bir boyut belirterek bir sütunun uzunluğunu, hassasiyetini veya ölçeğini değiştirebilirsiniz. Sütunda veri varsa, yeni boyut verilerin maksimum boyutundan küçük olamaz. Ayrıca, sütun varchar, nvarchar veya varbinary veri türü olmadıkça ve dizin bir PRIMARY KEY kısıtlamasının sonucu olmadıkça sütun bir dizinde tanımlanamaz. Örnek P'ye bakınız.

Kilitler ve ALTER TABLE

ALTER TABLE'da belirtilen değişiklikler hemen uygulanır. Değişiklikler tablodaki satırların değiştirilmesini gerektiriyorsa, ALTER TABLE satırları günceller. ALTER TABLE, çok kısa bir SCH-M kilidi gerektiren çevrimiçi dizin işlemleri dışında, değişiklik sırasında tablodaki meta verileri bile referans almadığından emin olmak için tablodaki bir şema değiştirme kilidini aldı. ALTER TABLE… SWITCH işleminde, kilit hem kaynak hem de hedef tablolardan elde edilir. Tabloda yapılan değişiklikler kaydedilir ve tamamen kurtarılabilir. Bir sütunu bırakmak veya varsayılan olarak bir NOT NULL sütunu eklemek gibi çok büyük tablolardaki tüm satırları etkileyen değişiklikler, birçok günlük kaydını tamamlamak ve oluşturmak için uzun zaman alabilir. Bu ALTER TABLE ifadeleri, herhangi bir INSERT, UPDATE,


Ayrıca harika cevap. Ama sadece birini seçebildim. Teşekkürler!
Fernando
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.