PDA

View Full Version : سوال: پاک کردم محتوی یک دیتابیس



k.asasi_programmer
جمعه 12 شهریور 1389, 15:18 عصر
با سلام خدمت دوستان عزیز و ارزوی قبولی طاعات و عبادات

بنده یک DB دارم که از چند TABLE تشکیل شده است و در ضمن بین TABLE ها هم ارتباط با کلید خارجی برقرار شده است.
می خواستم ببینم چطور می توانم در یک مرحله تمام محتوی DB را پاک کنم؟به جای اینکه تک تک محتوی TABLE ها را پاک کنم.
در ضمن DB ام توسط SQL Server Management Studio Express طراحی شده است.

خیلی ممنون از کمکتان :تشویق:

Mostafa_Dindar
جمعه 12 شهریور 1389, 15:24 عصر
در نسخه 2005 میتوانید با راست کلیک بر روی دیتابیس در Object Explorer و گزینه Task و گزینه Generate Script میتوانید اسکریپت دیتابیس رو بدون هیچ داده ای در جدولها تولید کنید , حال اگر این اسکریپت را Run کنید , همان دیتابیس بدون هیچ داده ای ساخته میشود .
در صورتی که از نسخه Express استفاده میکنید , پیشنهاد میکنم Management Studio Express رو هم نصب کنید تا از قابلیتهای بیشماری برخوردار شوید .

در غیر اینصورت در Server Explorer از Visual studio هم باید دنبال همچین قابلیتی بگردید

موفق باشید

k.asasi_programmer
جمعه 12 شهریور 1389, 17:01 عصر
اقا مصطفی گل
من هر چه قدر دنبال Run در محیط SQL Server Management Studio Express گشتم چیزی پیدا نکردم.اگر منظورتان دکمه execute است وقتی من انرا زدم در محیط message خطا داد.لطفا کاملتر توضیح می دهید که چطور مشکلم را حل کنم.
با تشکر از توجهه مجددتان :قلب:

بهنام بهمنی
جمعه 12 شهریور 1389, 17:25 عصر
روی پایگاه داده تان راست کلیک کرده گزینه New Query را انتخاب کنید, بعد Query تان را در انجا باز کرده و Run کنید

k.asasi_programmer
جمعه 12 شهریور 1389, 18:39 عصر
اقا بهنام نمی دونم چرا در قسمت message بازم خطا می ده.ممنون می شم اگر راهنماییم کنید.

Msg 2714, Level 16, State 6, Line 1
There is already an object named 'Log Change Pishkevat' in the database.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Log Change Pishkevat.Action'.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'User' in the database.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'TelShoghlDolatiPish' in the database.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'Pishkesvat' in the database.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Pishkesvat.jensiat'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Pishkesvat.VaziatMaskan'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Pishkesvat'.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'Log File' in the database.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'ShoghlDolatiPishkesvat' in the database.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghlDolatiPishkesvat.TedadRoz'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghlDolatiPishkesvat.TedadSaat'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghlDolatiPishkesvat.DaramadMahiane'.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'Farzand' in the database.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Farzand.Jensiat'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Farzand.Tahsilat'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Farzand.Taahol'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Farzand.Shoghl'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.Farzand.VaziatMaskan'.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'Takhasos' in the database.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'Mobile' in the database.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'ShoghlDolatiHamsar' in the database.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghlDolatiHamsar.DaramadMahiane'.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'ShoghAzadHamsar' in the database.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghAzadHamsar.DaramadMahiane'.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'TelephoneManzel' in the database.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'ShoghAzadPishkesvat' in the database.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghAzadPishkesvat.TedadRoz'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghAzadPishkesvat.TedadSaat'.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 37
Property cannot be added. Property 'MS_Description' already exists for 'dbo.ShoghAzadPishkesvat.DaramadMahiane'.
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'TelShoghlAzadPish' in the database.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_Farzand_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_Log File_User' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_Mobile_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_Pishkesvat_User' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_ShoghAzadHamsar_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_ShoghAzadPishkesvat_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_ShoghlDolatiHamsar_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_ShoghlDolatiPishkesvat_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_Takhasos_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_TelephoneManzel_Pishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_TelShoghlAzadPish_ShoghAzadPishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 2714, Level 16, State 4, Line 2
There is already an object named 'FK_TelShoghlDolatiPish_ShoghlDolatiPishkesvat' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.

بهزادصادقی
جمعه 12 شهریور 1389, 23:38 عصر
اگر واقعا می خواهی تمام محتویات database مورد نظر را پاک کنی و آن را کاملا خالی کنی، می توانی آن database را از بین ببری و از اول درستش کنی، که درست مثل اینه که برای اولین بار درستش کرده باشی. فرض کن اسم database شما MyDB می باشد. در این صورت می توانی بگویی:



drop database MyDB;

create database MyDB;


در این صورت یک database کاملا خالی خواهی داشت که اسم آن MyDB خواهد بود. ولی اگر این کار را کردی، باید بدانی که نه تنها محتویات آن جداولی که در بالا به آن اشاره کرده بودی پاک می شود، بلکه خود آن جداول نیز از بین می روند. و نه تنها آن، بکله کل همه جداول و همه object های دیگری هم که در database داری از بین خواهند رفت.

موضوع اینجاست که من نمی فهمم منظور شما از پاک کردن کل محتویات یک database چیست. اگر چیزی است که در بالا به آن اشاره کردم، که خوب، می توانی از کد بالا استفاده کنی. ولی اگر دنبال چیز دیگری هستی، بی زحمت توضیحات بیشتری بده و من سعی خواهم کرد کمکت کنم.

k.asasi_programmer
شنبه 13 شهریور 1389, 00:55 صبح
اگر واقعا می خواهی تمام محتویات database مورد نظر را پاک کنی و آن را کاملا خالی کنی، می توانی آن database را از بین ببری و از اول درستش کنی، که درست مثل اینه که برای اولین بار درستش کرده باشی. فرض کن اسم database شما MyDB می باشد. در این صورت می توانی بگویی:



drop database MyDB;

create database MyDB;
در این صورت یک database کاملا خالی خواهی داشت که اسم آن MyDB خواهد بود. ولی اگر این کار را کردی، باید بدانی که نه تنها محتویات آن جداولی که در بالا به آن اشاره کرده بودی پاک می شود، بلکه خود آن جداول نیز از بین می روند. و نه تنها آن، بکله کل همه جداول و همه object های دیگری هم که در database داری از بین خواهند رفت.

موضوع اینجاست که من نمی فهمم منظور شما از پاک کردن کل محتویات یک database چیست. اگر چیزی است که در بالا به آن اشاره کردم، که خوب، می توانی از کد بالا استفاده کنی. ولی اگر دنبال چیز دیگری هستی، بی زحمت توضیحات بیشتری بده و من سعی خواهم کرد کمکت کنم.
افا بهزاد منظورم از پاک کردن محتوی دیتابیس ،ازبین بردن دیتابیس و از نو ساخت ان نیست بلکه فقط می خواهم محتوی جداول (یعنی رکورد های جداول) را از بین ببرم.


باتشکر از همراهیتان

بهزادصادقی
شنبه 13 شهریور 1389, 01:06 صبح
احتمالا یکی از مشکلاتت این است که وقتی می خواهی رکوردهای بعضی از این جداول را پاک کنی، به خاطر وجود یک foreign key constraint، نمی توانی. درست است؟

k.asasi_programmer
شنبه 13 شهریور 1389, 02:33 صبح
احتمالا یکی از مشکلاتت این است که وقتی می خواهی رکوردهای بعضی از این جداول را پاک کنی، به خاطر وجود یک foreign key constraint، نمی توانی. درست است؟
بهزاد جان.حقیقتش بلدم چطور توسط دستی کل اطلاعات دیتابیس راپاک کنم و وجود یک foreign key constraint برایم مشکلی ایجاد نمی کند. ولیکن این روش زیاد معقول نیست و در ضمن حوصله سر بر است. من دوست دارم یک روش منطقی برای پاک کردن محتوی یک دیتابیس پیدا کنم.
ممنون می شم اگر راهنماییم کنی.:متفکر:

nooshin964
شنبه 13 شهریور 1389, 10:53 صبح
دستور زير را چندين بار پشت سر هم اجرا كن:
'? sp_msforeachtable 'delete from

k.asasi_programmer
شنبه 13 شهریور 1389, 19:19 عصر
دستور زير را چندين بار پشت سر هم اجرا كن:
'? sp_msforeachtable 'delete from
دوست عزیز می شه دقیقا به بنده بگید ساختار این دستور چیه و در کجای sql بزنم.
با تشکر از توجهتان

ahmadpj
سه شنبه 16 شهریور 1389, 16:09 عصر
معمولا دستورها رو باید توی query analyzer بزنین ولی هرجای دیگه ای که بشه یک فرمان sql رو اجرا کرد می تونین بزنین، از جمله توی اپلیکیشن خودتون

k.asasi_programmer
سه شنبه 16 شهریور 1389, 16:24 عصر
ذوست عزیز من معمولا data base را به صورت visual طراحی میکنم.ممنون می شم اگر در مورد query analyze یا هر مورد دیگری که ذهنتان می رسد،بیشتر توضیح بدی.
با تشکر

ahmadpj
جمعه 19 شهریور 1389, 09:54 صبح
برای اجرای دستورها:
روی دیتابیس راست کلیک کنین و از منویی که ظاهر میشه new query رو انتخاب کنین، پنجره ای ایجاد میشه که در اون میتونین دستورها رو تایپ و اجرا کنین.
---------------------------------------------------------

برای حذف رکوردهای همه ی جدول ها:
ساده ترین و شاید بهترین کار اینه که دیتابیس رو اسکریپت کنین و بعد اون رو حذف کنین، و با اجرای اسکریپت دوباره دیتابیس رو ایجاد کنین. (راست کلیک روی دیتابیس و انتخاب اسکریپت)
اما اگر نمیخواین از این روش استفاده کنین و اصرار دارین که فقط رکوردها حذف بشن، این دستورها رو در پنجره ای که گفتم کپی کنین و بعد اجرا کنین:

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

چون ممکنه بعضی از جدول ها به جدولهای دیگه ای لینک شده باشن، دستوری که nooshin964 گفت ممکنه نتونه در یک مرحله همه ی جدولها رو حذف کنه.
اما با این دستورها، ابتدا محدودیت ها لغو میشن، بعد اطلاعات حذف میشن و بعد دوباره محدودیت ها برقرار میشن.