it-swarm.asia

تغيير عرض العمود

هل تؤدي زيادة عرض العمود (nvarchar) إلى إسقاط الجدول بالضرورة؟

بمعنى آخر ، هل يمكن تغيير العرض في بيئة الإنتاج مع المستخدمين النشطين؟

اكتشفت أنه إذا كان الحجم يتزايد (على عكس التناقص) فلن يكون هذا مشكلة.

40
Fernando

إذا كنت تفعل ذلك من خلال عبارة T-SQL مثل أدناه ، فلن يحدث انخفاض في الجدول ويمكنك القيام بذلك بأمان في بيئة إنتاج:

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

إذا قمت بذلك من خلال واجهة المستخدم الرسومية الخاصة بجدول تصميم SSMS ، فسيعتمد ذلك على البرنامج النصي الذي يقرر استخدامه لتنفيذ التغيير. في بعض الأحيان يقوم بإدراج البيانات في جدول مؤقت ، وإسقاط الجدول الأصلي ، وإنشاء نسخة جديدة من هذا الجدول ، وإدراجه مرة أخرى في الجدول الجديد. طريقة سهلة لمعرفة ما ستفعله هي النقر فوق الزر "إنشاء برنامج نصي" وإلقاء نظرة على T-SQL التي تخطط لتنفيذها.

53
Derek Kromm

لن تتطلب زيادة عرض العمود لعمود nvarchar انخفاض الجدول. ولا أي ALTER TABLE عملية. للحصول على تفاصيل حول القيود عند تغيير خصائص الجدول أو العمود ، يمكنك القراءة على عبارة ALTER TABLE .

لقد نسخت الأجزاء الأكثر صلة بالموضوع من الوثائق أدناه:

تغيير حجم العمود

يمكنك تغيير طول العمود أو دقته أو مقياسه عن طريق تحديد حجم جديد لنوع بيانات العمود في عبارة ALTER COLUMN. إذا كانت البيانات موجودة في العمود ، فلا يمكن أن يكون الحجم الجديد أصغر من الحد الأقصى لحجم البيانات. أيضًا ، لا يمكن تعريف العمود في فهرس ما لم يكن العمود نوع بيانات varchar أو nvarchar أو varbinary ولم يكن الفهرس نتيجة لقيد المفتاح الأساسي. انظر المثال P.

أقفال و ALTER TABLE

يتم تنفيذ التغييرات المحددة في ALTER TABLE على الفور. إذا كانت التغييرات تتطلب تعديلات على الصفوف في الجدول ، فإن ALTER TABLE يقوم بتحديث الصفوف. يحصل ALTER TABLE على قفل تعديل المخطط على الجدول للتأكد من عدم وجود اتصالات أخرى تشير حتى البيانات الوصفية للجدول أثناء التغيير ، باستثناء عمليات الفهرس عبر الإنترنت التي تتطلب قفل SCH-M قصير جدًا في النهاية. في عملية ALTER TABLE… SWITCH ، يتم الحصول على القفل على كل من جدولي المصدر والهدف. يتم تسجيل التعديلات التي تم إجراؤها على الجدول وقابلة للاسترداد بالكامل. يمكن أن تستغرق التغييرات التي تؤثر على جميع الصفوف في جداول كبيرة جدًا ، مثل إسقاط عمود أو إضافة عمود NOT NULL افتراضيًا ، وقتًا طويلاً لإكمال وإنشاء العديد من سجلات السجل. يجب تنفيذ عبارات ALTER TABLE بنفس عناية أي عبارة INSERT أو UPDATE أو DELETE التي تؤثر على العديد من الصفوف.

18
MicSim