أسرع طريقة لحذف كافة محتويات قاعدة البيانات وإعادة بنائها من البداية؟

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

سؤال

أقوم بتصميم موقع ASP.Net قياسي باستخدام قاعدة بيانات SQL.لدي مخطط قاعدة بيانات وأثناء الاختبارات أقوم بتغيير أنواع البيانات من بين مهام أخرى والبيانات الموجودة بداخلها ليست بهذه الأهمية حقًا.

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

هل هناك زر/ميزة سريعة فاتني تتيح لك إعادة تعيين الأرقام التلقائية/المعرفات إلى 1 وحذف كل المحتوى، أو مجرد تسريع ما أفعله حاليًا؟

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

المحلول

وهناك عدد قليل من الخيارات التي يمكن أن تتخذ، في "أسرع" حقا يتوقف على قاعدة البيانات الخاصة بك.

لإجابة على أسئلتك أولا على البذر، الخ -. باقتطاع TABLE سيتم حذف جميع المعلومات في جدول (سريع جدا، كما لم يتم تسجيل ذلك) وسيتم إعادة تعيين العمود هويتك

وعلى سبيل المثال:

TRUNCATE TABLE dbo.table

http://msdn.microsoft.com/ أون لنا / مكتبة / aa260621 (SQL.80) .aspx اتصال

وتقييد كبير هنا هو أنه لا يمكن استخدامه على جدول المشار إليها بواسطة جدول آخر. في هذه الحالة يمكنك استخدام معيار حذف ومن ثم استخدام CHECKIDENT DBCC

وعلى سبيل المثال:

DELETE FROM dbo.table
GO
DBCC CHECKIDENT(dbo.table, reseed, 0)

http://msdn.microsoft.com/en-us/library /ms176057.aspx

وحفظ مع حذف للتأكد من حذف معلومات في الترتيب الصحيح (أي مع مراعاة المفاتيح الخارجية).

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

IF EXISTS 
(
     SELECT * 
     FROM information_schema.tables 
     WHERE table_name = 'table' AND table_schema = 'dbo'
)
BEGIN
    DROP TABLE dbo.table
END

نصائح أخرى

لماذا لا تكتب بعض رمز T-SQL لحذف (أو اقتطاع، حتى أسرع) كل ما تبذلونه من الجداول؟ كن حذرا أن تأخذ في الاعتبار قواعد التكامل الخاصة بك في حين تطهير الجداول: لل Allways تنظيف الجداول التي تحتوي على المفتاح الخارجي قبل تنظيف واحدة تحتوي على المفتاح الأساسي

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

TRUNCATE TABLE myTable

لكل جدول لديك. بعد ذلك فقط تشغيل هذا البرنامج النصي في كل مرة.

إليك طريقة سريعة لحذف كافة البيانات الموجودة في الجدول:

TRUNCATE TABLE YourTableName

يمكنك كتابة برنامج نصي من شأنه أن يقتطع كافة الجداول الخاصة بك.

البديل هو فقط إسقاط الجدول وإعادة إنشائه.

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

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

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

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

وإذا كنت تستخدم Visual Studio 2010 ثم

وفتح مجلد App_Data من الحل وانقر مرتين على ملف MDF. انقر بزر الماوس الأيمن على الجدول الخاص بك، في القائمة حدد "إظهار جدول البيانات". تحديد كافة الصفوف وحذف كل منهم.

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