هل هي آمنة للإسقاط ثم قم بإنشاء القيود في قاعدة البيانات

StackOverflow https://stackoverflow.com/questions/772090

  •  12-09-2019
  •  | 
  •  

سؤال

أنا مرتبك بعض الشيء وتحتاج إلى مساعدتكم. لدي قاعدة بيانات تحتوي على أكثر من 150 طاولة. لدي العديد من الحقول التي يجب أن تدعم Unicode ولكن الآن لا تتقول، وبالتالي أريد تغيير نوع بيانات العمود إلى NText و Nvarchar في هذه العملية، يجب علي إسقاط القيود ثم قم بإنشائها مرة أخرى. هل هي آمنة لإسقاط القيود وإنشائها مرة أخرى.

* لدي 286 أعمدة لتغيير وعدم معرفة العديد من القيود يجب إسقاطها وإنشائها في هذه العملية.

* كل ما أريد معرفته هو أنه من الآمن تغيير نوع بيانات العمود للمشروع نموا بالكامل.

هل كانت مفيدة؟

المحلول

إذا كنت تستطيع القيام بذلك دون أن تكون قاعدة البيانات قيد الحياة، فيجب أن تكون آمنة. أشياء مهمة في الاعتبار في الاعتبار هي التأكد من أن لديك جميع القيود الموثقة، أن لا يتأثر أي منهم من التغيير في نوع العمود (أو إذا كانت قد تخفف لذلك) وأنك تكون واضحا على التبعيات بين تلك القيود.

أعتقد أنني أقول فقط، تأكد من أن لديك عملية واضحة وأن تتبع ذلك.

نصائح أخرى

كل هذا يمكن القيام به مع العملة (كل كاملة أو التراجع) مع أدوات مقارنات الطرف الثالث.

وهذا هو، يمكنك القيام بالتغييرات بشكل فردي في التنمية (باستخدام SSMS لإجراء تغييرات) ولكن إنشاء "آمنة" تغيير البرامج النصية والتراجع (ولكن دائما ما يكون لديك نسخة احتياطية رغم ذلك).

خلاف ذلك، من الآمن القيام به: قد تحدث المشكلة إذا كان شخص ما يستخدم قاعدة البيانات في ذلك الوقت وإما وضع بيانات خاطئة أو جرب استعلام بدون فهرس.

يقود نهج المعاملة الثالث للأدوات الثالثة إلى أقسام الكائنات طوال مدة التغييرات بأكملها.

بالطبع، يمكنك أن تفعل واحدة في وقت واحد بدلا من أن هذه الأدوات الكبيرة ولكن هذه الأدوات لا تزال مفيدة.

ولكن هناك طريقة أفضل: يمكنك تعطيل الفهرس. انظر على MSDN.. وبعد هذا يحتفظ تعريف الفهرس.

إذا قمت بتشغيل هذا على آلة عملاء (على سبيل المثال. مع مثبت)، يجب عليك وضع قاعدة البيانات في وضع المستخدم الفردي للتأكد من عدم قيام أي تطبيق بإدراج البيانات في الوقت نفسه. هذا من شأنه أن يسمح ببيانات غير متناسقة ولن تتمكن من إنشاء / تمكين الفهرس.

يحرر: (بعد التعليق بواسطة GBN)

تعطيل لا يعمل على الأرجح لحالتك.

نحن أيضا إزالة القيود عند ترقية قاعدة البيانات، وبشكل عام يتم حفظ. جوانب أخرى ذكرت بالفعل من قبل الآخرين: تحتاج إلى معرفة كل منهم لإنشاءها. هناك أدوات تخلق النصوص من قواعد البيانات الموجودة، أو يمكنك كتابة ذلك بنفسك. يجب أن تكون جميع المعلومات في الواقع في قاعدة البيانات. على سبيل المثال، تحصل على البرامج النصية بواسطة Studio Management، ولكن واحدا تلو الآخر (كما أعرف).

إذا قمت بذلك في بيئة منتجة، يمكنك وضع قاعدة البيانات في وضع المستخدم الفردي للتأكد من عدم قيام أي تطبيق باستخدامه.

نجعل مخطط يتغير في كل وقت، إليك إجراءنا بشكل عام:

لكل طاولة:

  • قم بإجراء تغييراتك داخل SQL Server Management Studio، ستلاحظ أن هذه النصوص إسقاط وإعادة إنشاء القيود طوال الوقت بدون مشاكل

  • توليد البرامج النصية، انسخها إلى ملف

  • إلغاء التغييرات (لا تنطبق عليها على قاعدة البيانات)

انتقل إلى قاعدة بيانات اختبار / تطوير مع نفس المخطط بالضبط كإنتاج وتشغيل البرنامج النصي الخاص بك

إذا كان لديك أي أخطاء، حلها، واستعادة اختبار / تطوير وإعادة الاختبار

إذا لم يكن لديك أي أخطاء

  • قم بعمل نسخة احتياطية حسب الضرورة

  • جدولة تطبيق LOCTALY مع المستخدمين إذا لزم الأمر

  • ضع قاعدة البيانات في وضع المستخدم الفردي، سيمنع ذلك أي بيانات من تغييرها عند فقدان القيود

  • قم بتشغيل ملف البرنامج النصي

  • خذ قاعدة البيانات من وضع المستخدم الفردي

بدلا من انقطاع وإعادة إنشاء القيود التي قد تجرب نهجها تعطيل وتمكينهم. وبعد لست متأكدا من أن هذا سيعمل إذا قمت بتغيير نوع العمود وفي الوقت نفسه، ولكن طالما كنت تبقي أسماء الأعمدة دون تغيير، فإنه يستحق الاختبار

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top