هل من الممكن أن يكون لديك حقول NVARCHAR (MAX) وحقول VARBINAR (MAX) في نفس الجدول

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

سؤال

أنا أستخدم SQL Server 2008 R2.

لدي طاولة تحتوي على العديد من الحقول بما في ذلك حقل NVARCHAR (MAX).

عندما أحاول إضافة حقل جديد من النوع varbinary (بحد أقصى) ، أحصل على رسالة خطأ: "لا يُسمح بحفظ التغييرات. التغيير الذي أجريته يتطلب أن يتم إسقاط الجداول التالية وإعادة إنشاءها".

هل من الممكن أن يكون لديك حقول NVARCHAR (MAX) وحقول VARBINAR (MAX) في نفس الجدول؟

هل الطريقة الوحيدة لإصلاح هذا ، لإنشاء جدول جديد بالهيكل الجديد ونقل البيانات؟

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

المحلول

نعم هذا ممكن.

إذا كنت ترى هذه الرسالة ، فيجب أن تكون قد حاولت إدراج العمود الجديد في منتصف تلك الموجودة في مصمم جدول SSMS. أضفه إلى نهاية الأعمدة الموجودة ، فلن يتعين إعادة بناء الجدول بالكامل.

أو مجرد تنفيذ

alter table YourTable add newcol varbinary(max) null

نصائح أخرى

نعم بالطبع - من المحتمل أن يكون لديك خيار "أمان" جديد في SSMS لا يزال ممكّنًا (إنه قيد التشغيل بشكل افتراضي):

alt text

هذا تحت Tools > Options ....

اذهب إلى Tools | Options > Designers وإلغاء تحديد خيار "منع حفظ التغييرات التي تتطلب إعادة إنشاء الجدول"

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

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