آی تی نرد

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

حذف تمام رکوردها از تمام جداول دیتابیس در 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

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

مشکل intellisense در Sql Server 2008 R2

در صورتی که از Sql Server 2008 R2 استفاده میکنید و با مشکل عدم نمایش منوی هوشمند(Intellisense) حتی در صورت فعال بودن آن در منوی Query در زمان نوشتن کوئری مواجه شده اید. برای رفع این مشکل تنها راه قابل اطمینان و صددرصد نصب سرویس پک شماره ی یک و یا دو هست. در زیر لینک مستقیم دانلود سرویس پک ها با حجم حدود 350 مگ از سایت مایکروسافت قابل دانلود می باشد:

صفحه ی دانلود سرویس یک یک
صفحه ی دانلود سرویس پک شماره ی دو