PDA

View Full Version : حرفه ای: پاک کردن تمام اطلاعات در دیتابیس



Arash_janusV3
سه شنبه 14 دی 1389, 10:41 صبح
سلام
با چه دستوری(scrip) می تونم تمام اطلاعات یک دیتابیس رو پاک کنم؟
ممنون

fa_karoon
سه شنبه 14 دی 1389, 12:31 عصر
سلام فکر می کنم با دستور Truncate تمام رکوردهای یک جدول رو می تونی پاک کنی اگه اشتباه نکنم فیلد ID هم بعد از اون دیگه از یک شروع می شه

parsidev
سه شنبه 14 دی 1389, 18:03 عصر
یکی راه های ساده حذف اطلاعات جداول نه بانک ها استفاده از دستور ترانکیته که دوستمون فرمودن اما روش دیگری هم وجود داره


Delete * from tablename


کوئری بالا رو اجرا کنید و به جای tablename نام جدول مورد نظر رو بذارین
با احترام

bahar123
سه شنبه 14 دی 1389, 21:08 عصر
سلام
دستوری برای اینکار وجود ندارد
میتونی یک sp بنویسی و این دستور رو برای تک تک جداولت بنویسی و در انتها executeش کنی:


truncate table <table name>

حمیدرضاصادقیان
سه شنبه 14 دی 1389, 23:44 عصر
سلام.


سلام فکر می کنم با دستور Truncate تمام رکوردهای یک جدول رو می تونی پاک کنی
با این دستور میشه ولی اگر بین جداول Relation داشته باشند خطا دریافت میکنند.


Delete * from tablename
این دستور اشتباه هست و نیازی به * نیست.


دستوری برای اینکار وجود ندارد
میتونی یک sp بنویسی و این دستور رو برای تک تک جداولت بنویسی و در انتها executeش کنی

نیازی به اینکار نیست.
میشه باکد زیر خیلی راحت اینکارو انجام داد.


Exec Sp_MsforEachTable 'Delete from ?'

با این دستور تمامی رکوردهای موجود در تمامی جداول در یک دیتابیس حذف خواهد شد.

موفق باشید

parsidev
چهارشنبه 15 دی 1389, 07:18 صبح
این دستور اشتباه هست و نیازی به * نیست.
دستوری برای اینکار وجود ندارد
میتونی یک sp بنویسی و این دستور رو برای تک تک جداولت بنویسی و در انتها executeش کنی


درسته یه اشتباه از من بود...
ستاره برای حذف کاربردی نداره

Arash_janusV3
چهارشنبه 15 دی 1389, 10:35 صبح
با تشکر از همه دوستان به خصوص جناب حمیدرضا صادقیان
من یک امکانی رو می خوام به برنامه ام اضافه کنم تحت عنوان حذف اطلاعات برنامه به خاطر همین باید بتونم اطلاعات کل دیتابیس رو یک جا حذف کنم اگر یک scrip هم باشه کارم راه می افته
من در تمام فرمهام حذف table رو دارم و بخاطر زیاد بودن انها و گرفتن وقت زیاد می خوام این امکان هم باشه



Exec Sp_MsforEachTable 'Delete from ?'

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

Rejnev
چهارشنبه 15 دی 1389, 11:05 صبح
لطفا کار علامت سوال رو هم در پارامتر این پروسیجر توضیح بدید. چه دستوراتی رو میشه به عنوان پارامتر به اون فرستاد و اون چطوری دستورات رو اجرا میکنه؟

حمیدرضاصادقیان
چهارشنبه 15 دی 1389, 14:00 عصر
سلام.
این دستور در واقع خودش یک Cursor رو اجرا میکنه و روی دیتابیسی که در حال اجراست دستور ارسال شده رو برای همه جداول انجام خواهد داد.
کار علامت سوال در واقع یعنی اینکه همه جداول رو شامل بشه.
برای توضیحات بیشتر این لینک (http://www.databasejournal.com/features/mssql/article.php/3441031/SQL-Server-Undocumented-Stored-Procedures-spMSforeachtable-and-spMSforeachdb.htm) رو نگاه کنید.

mohammadjp
چهارشنبه 15 دی 1389, 14:14 عصر
در لینکهای زیر اطلاعات کاملی وجو داره
http://forum.codecorona.com/showthread.php?tid=1180
http://vahidnasiri.blogspot.com/2009/03/sql-server.html

Arash_janusV3
پنج شنبه 16 دی 1389, 10:46 صبح
سلام
باتشکر از دوستان
همه چی حل شده
فقط من فزاموش کرده بودم که یک table هام نباید داده هاش خالی بشه در scrip delet باید چه دستوری رو بهش اضافه کنیم؟
اگر برای trigger هم بگید خیلی خیلی ممنون می شم
باسپاس

Rejnev
پنج شنبه 16 دی 1389, 14:31 عصر
همون دستور منتهي به اينصورت:


sp_msForeachTable 'if ''?''<>'tblUsers' delete from ?'

يا يك چيزي تو اين مايه ها ببين كار ميكنه.

Arash_janusV3
شنبه 18 دی 1389, 15:10 عصر
من هنور نتونستم اطلاعات یک table رو نگه دارم بقیه رو پاک کنم
لطفا راهنمایی کنید
ممنون

Arash_janusV3
دوشنبه 27 دی 1389, 12:45 عصر
سلام
باتشکر از دوستان
همه چی حل شده
فقط من فزاموش کرده بودم که یک table هام نباید داده هاش خالی بشه در scrip delet باید چه دستوری رو بهش اضافه کنیم؟
اگر برای trigger هم بگید خیلی خیلی ممنون می شم
باسپاس
من هنوز این مشکل رو دارم
ممنون

Rejnev
دوشنبه 27 دی 1389, 13:28 عصر
كافي بود يك ذره خودت كار ميكردي و امتحان ميكردي تا دقيقا به همون جوابي كه من رسيدم ميرسيدي:

EXEC sp_msforeachtable 'if ''"?"''<>''"[dbo].[t]"'' select * from ?'
t نام جدوليه كه نميخوايم select گرفته بشه. حالا شما جاي select از delete يا هر چيز ديگه اي كه ميخواي استفاده كن
پرسيدن خوبه. ولي دنبال كردن سرنخ و يادگيري خود آدم خيلي بهتر از اينه كه لقمه رو آماده بدن به ما.