آی تی نرد

اشتراک اطلاعات و تجربیات در زمینه ی توسعه ی دات نت و البته شیرپوینت

حذف تمام رکوردها از تمام جداول دیتابیس در SQL Server

در صورتی که بنا به دلایلی نیاز به حذف تمام اطلاعات موجود در تمام جداول یک دیتابیس در Sql sever پیدا کردید میتوانید بدون نیاز به اجرای T-Sql برروی هر جدول به صورت یکجا همه ی این رکوردها یا اطلاعات رو حذف کنید.

برای مثال این اسکریپت کاربردی زمانی به درد من خورد که میخواستم یه دیتابیس رو که در نسخه ی 2012 sql بود به 2008 بیارم برای همین مجبور شدم اسکریپت دیتابیس رو در نسخه ی 2012 به همراه دیتا با سازگاری 2008 تهیه کنم و در 2008 اجرا کنم که در زمان اجرای اسکریپت با کلی خطا مواجه شد که واقعا خطایابی اون کلی وقت نیاز داشت. برای همین چون من اسکریپت اولیه ی ایجاد دیتابیس رو به همراه داده های نمونه داشتم، اون رو روی 2008 اجرا کردم و بعد تمام اطلاعات نمونه ی این دیتابیس رو با کمک این دستورات حذف و سپس از تمام داده های موجود در دیتابیس 2012 اسکریپت گرفتم و اون رو با موفقیت توی 2008 اجرا کردم.

بدین منظور میتونید از کد t-sql زیر استفاده کنید. البته ابتدا انتخاب دیتابیس مورد نظر فراموش نشود:

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'DELETE FROM ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO

در کد های بالا دو خط اول و آخر به منظور برداشتن کنترل وابستگی جداول و رکورد ها و سپس برگرداندن آن می باشد و در خط دوم هم رکوردها از تمام جداول حذف خواهند شد.

نظرات (4) -

  • مجتبی

    1/5/1394 11:06:13 ب.ظ | پاسخ به این نظر

    سلام.
    عیدتون مبارک.
    اگر  بخام یک رکورد خاص از ی تیبل که به چند تا ویو و تیبل وابسته هستند حذف کنم چی باید بنویسم تو کوئری اس کیو ال؟
    مرسی

  • ramyad

    7/25/1394 03:51:04 ب.ظ | پاسخ به این نظر

    سلام
    برای حذف یک سری از جداول که زیاد هستند ولی باید شرط بر روی آنها اعمال بشه میشه در همین دستور شرط رو هم وارد کنیم؟؟؟؟
    ممنون میشم توضیح بدین

Loading