PDA

View Full Version : سوال: مشکل با عملیات restore با استفاده از storedproceduer



mohammad kafiyan
پنج شنبه 17 تیر 1389, 09:27 صبح
سلام به دوستان به یک مشکل برخوردم با استفاده از storedproceduer برنامه مربوط به restore در storedproceduer نوشتم حالا وقتی می خواهم save کنم با پیغام خطای زیر مواجهه می شوم ولی بدونه استفاده از storedproceduer مشکلی نداره نمی دونم اشتباهی در نوشتن دارم


ALTER PROCEDURE [dbo].[restore_taxi]
(
@strFileName nvarchar(50)
)
AS
ALTER DATABASE [taxi] SET SINGLE_USER with ROLLBACK IMMEDIATE USE master RESTORE DATABASE [taxi] FROM DISK=@strFileName
RETURN

خطا:
a use database statement is not allowed in a proceduer , function or trigger

mohammad kafiyan
پنج شنبه 17 تیر 1389, 18:17 عصر
سلام به دوستان کسی نبود راهنمایی بکنه
:عصبانی++::گریه:

mahdi87_gh
پنج شنبه 17 تیر 1389, 18:44 عصر
دوست عزیز برای بکاپ و ریستور میتونی از dll ای که نوشتم کمک بگیری
http://barnamenevis.org/forum/showthread.php?t=64210&page=52
پست 515
موفق باشی

mohammad kafiyan
پنج شنبه 17 تیر 1389, 20:09 عصر
دوست عزیز برای بکاپ و ریستور میتونی از dll ای که نوشتم کمک بگیری
دوست عزیز از dll نمی خوام استفاده کنم فقط اگر کسی با storedproceduer کار کرده کمک کنه من backup را با استفاده از storedproceduer نوشتم و جواب داد حال restore با استفاده storedproceduer پیغام بالا را می دهد
:عصبانی++::عصبانی++:

mohammad kafiyan
دوشنبه 21 تیر 1389, 09:48 صبح
باز هم از دوستان کسی نبود کمک کنه اگر واقعا کار کردید کمک کنید
:ناراحت::کف::گریه:

mohammad kafiyan
سه شنبه 22 تیر 1389, 22:38 عصر
سلام به دوستان یعنی کسی تا به حال با استفاده از storedproceduer ننوشته
و کار نکرده
اگر واقعا کسی در این زمینه کار کرده کمک کنه تا storedproceduerمربوط به restore کامل کنیم و backup را هم قرار بدهم هم خودم و هم دیگران استفاده کنند
:متعجب::متعجب::متعجب:

mohammad kafiyan
چهارشنبه 14 دی 1390, 19:51 عصر
با سلام به دوستان آیا می خواستم ببینم می شه با storedprocduer امکان بازیابی بانک را انجام داد من از کد بالا استفاده کرده و همان پیغام را می ده آیا باید تغییراتی در کد بدهم
با تشکر از دوستان

mohammad kafiyan
چهارشنبه 14 دی 1390, 20:47 عصر
سلام به دوستان من تمام تایپک های این سایت ارجب restore کردن database دیدم و تمام آنها را چک کردم
در ضمن بگم طراحی database را قبلا در sqlsever2005 انجام دادم ولی حالا در sqlsever2008 attch کردم شاید به خطر این باشه چون در بار اول راجب فایل log یک warning داد و بعد attch انجام شد (البته به صورتی دستی)
اول بگم که بکاپ گیری انجام می شه و فایل ساخته می شه ولی زمانی از کد های متفاوتی برای restore استفاده کردم با خطای زیر مواجهه شدم
The tail of the log for the database "anbar" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.
کد مربوط به restore :


connect();
cmd.Connection = con;
string query = "ALTER DATABASE [anbar] SET SINGLE_USER with ROLLBACK IMMEDIATE use master RESTORE DATABASE [anbar] FROM DISK='" + path_backup_restore + "'";
cmd.CommandText = query;
sd.SelectCommand = cmd;
con.Open();
cmd.ExecuteNonQuery();
con.Close();

arefba
پنج شنبه 15 دی 1390, 00:54 صبح
راهنمایی می کنم ولی خستم نمیرسم فایل example برات آپلود کنم
ببین اینکار برای انجام درستش باید از طریق کامپوننت های که همراه اس کیو ال سرور هست انجام بشه
sql.smo
اینا موقع نصب اس کیو ال میرن توی پوشه هاش که می تونی راحت پیداشون کنی با یه سرچ
مثال هم خواستی سرچ کن پیدا می کنی

zarrinnegar
پنج شنبه 15 دی 1390, 01:41 صبح
ببین خیلی ساده است
در sql بعد از هر دستور اصلی باید یک دستور go نوشته بشه

شما اومدید از دستور use بلافاصله بعد از دستور alter استفاده کردید
و بعدش دوباره بلافاصله از دستور restore استفاده کردید

بینشون یک go بنویس

mohammad kafiyan
پنج شنبه 15 دی 1390, 16:15 عصر
سلام اگه ممکنه یک نمونه مثال بزنید
آیا Query که برای restore نوشتم درسته یا نیاز به تغییرات داره
کجا دقیقا GO را باید تایپ کنم
و بعد هم برای تمام دستورات از جمله Insert,update,delete برای اینها هم نیاز است که Go تایپ شود

در sql بعد از هر دستور اصلی باید یک دستور go نوشته بشه
بینشون یک go بنویس

استفاده کردم ولی به Go گرفت لطفا راهنمایی کنید دقیقا کجا باید استفاده کنم