ورود

نسخه کامل مشاهده نسخه کامل : نحوه backup گرفتن و Restore کردن دیتابیس



persianmahdi
13-07-2009, 14:58
سلام

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

دستورات backup گرفتن و restore کردن دیتابیس را میخوام .

برای c#.net2005 و دیتابیسم هم sql sarver 2005 هستش .

خواهشا کمک کنید دیگه اعصابم به هم ریخته :19:

_H2_
13-07-2009, 18:37
سلام

ممنون میشم اگه بحث را در ادرس زیر ادامه بدید

!!!!!



پیشنهاد میکنم از ابزار جدید SMO و کدی مثل این استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

persianmahdi
13-07-2009, 19:30
سلام

راستش من یک روز کامل دنبال بکاپ و رستور بودم هر چی توی نت سرچ زدم و کد پیدا کردم هیچ کدومشون واسه من جواب ندادند .
یعنی هر کدومشون توی یک قسمت ارور میدادن و هر کاری میکردم رفع نمی شدند . متاسفانه چون مطالبش قدیمی بودن کسی نبود که به اونها پاسخ بده .

در مورد این کدی که شما گذاشتید اصلا این فضای نام را قبول نمی کنه .
یعنی Management را نداره .

چون توی فضای نام ارور میده بقیه کد را هم نتونستم امتحان کنم ببینم جواب میده یا نه .

ممنون میشم ساده و کامل توضیح بدید .

_H2_
13-07-2009, 19:43
سلام

در مورد این کدی که شما گذاشتید اصلا این فضای نام را قبول نمی کنه
مشخصه، شما باید SMO را Reference کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

البته تا جایی که یادم می آید کد فوق در نسخه SQLServer-Express کار نمیکند و شما باید نسخه ای مناسب از SQLServer2005 را نصب داشته باشید.

persianmahdi
13-07-2009, 20:14
Reference را اضافه کردم و فضای نام درست شد .

اما توی خط زیر خطای {"Backup failed for Server 'MAHDI'. "} را میده


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چی کارش کنم ؟


البته تا جایی که یادم می آید کد فوق در نسخه SQLServer-Express کار نمیکند و شما باید نسخه ای مناسب از SQLServer2005 را نصب داشته باشید
sql sarver 2005 هستش .

CHAPTER
14-07-2009, 21:21
من از همین کد استفاده کردم دقیقا همین ارور رو مده البته بانک من sql 2005 exoress هست (add کردم تو پروژه ام)

_H2_
15-07-2009, 00:11
سلام
متاسفانه این پیغام میتواند طیف وسیعی از دلایل را شامل شود
از باگ 921106 داخلی نسخه 2005 گرفته تا برسد به مشکل تنظیمان غیر صحیح سرویس FTS ...

پیغام مذکور باید توضیحات بیشتری داشته باشد که شما باید کل اطلاعات خطا را اینحا درج کنید، شاید به یافتن دلیل کمک کند.

اما به عنوان یک راه حل ساده و آسان میتوانید از کد زیر هم استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تست کنید.

mahdi7610
15-07-2009, 12:16
یک نکته هم اینکه Backup گیری توی هر مسیری قابل انجام نیست .

مثلا توی دسکتاپ یا root درایوها پشتیبان گیری انجام نمی شه .

CHAPTER
15-07-2009, 13:29
نمی دونم چرا در مورد بانک های add شده هیچ کدم از این کدها کار نمی کنه

_H2_
15-07-2009, 15:39
سلام

مثلا توی دسکتاپ یا root درایوها پشتیبان گیری انجام نمی شه
بله صحیح است و باید گروه اکانت Authenticated Users اجازه دسترسی به آن محل را داشته باشد.
نتیجتاً مکان های مثل desktop و mydocument و ریشه درایو C و... در اغلب رایانه ها مشکل ساز خواهد بود.
(دقیقاً به همین دلیل در کد پست قبلی ام مکان پیش فرضی مثل D:\file.bak را برای پشتیبانگیری در کد معرفی کردم)



... بانک های add شده ...
منظورتان از لفظ "add شده" چه بود؟

nasim965
17-08-2009, 10:49
سلام دوستان
من هم هنگام restore کردن یک backup در یک دیتابیس جدید پیغام error زیر را دریافت می کنم.

Restore failed for server 'Dynamic' . (Microsoft.sqlserver.smo)
Additional information
system.data.sqlclienr.sqlError:the backup set holds a backup of a database other than the existing 'axapta' database. (Microsoft.sqlserver.smo)

عــــلی
17-08-2009, 11:18
سلام دوستان
من هم هنگام restore کردن یک backup در یک دیتابیس جدید پیغام error زیر را دریافت می کنم.

Restore failed for server 'Dynamic' . (Microsoft.sqlserver.smo)
Additional information
system.data.sqlclienr.sqlError:the backup set holds a backup of a database other than the existing 'axapta' database. (Microsoft.sqlserver.smo)
سلام.
شما احتمالاً برنامه را اجرا و در حال استفاده از دیتابیس هستید و میخواهید بکاپ را جای گزین دیتابیس اصلی کنید...
فکر نکنم این کار زمانی که از دیتا بیس استفاده میکنید ممکن باشه....
موفق باشید.

nasim965
17-08-2009, 12:01
دوست عزیز
سلام
هیچ برنامه بازی ندارم و تنها sql server باز می باشد و این پیغام error را در مورد تمام بک آپ هایی که می خواهم restore کنم (حتی در یک دیتابیس جدید) دریافت می کنم.

_H2_
18-08-2009, 20:44
سلام

من هم هنگام restore کردن یک backup در یک دیتابیس جدید پیغام error زیر را دریافت می کنم
به انتهای دستور restore عبارت WITH REPLACE را اضافه کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sari-1369
30-10-2009, 01:05
سلام دوستان :

من از این کد برای بکاپ گیری استفاده کردم ولی تو خط آخر بهم گیر داد :41:



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



متن خطا :




Microsoft.SqlServer.Management.Smo.FailedOperation Exception was unhandled
HelpLink="[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] nTemplates.FailedOperationExceptionText&EvtID=Backup+Server&LinkId=20476"
Message="Backup failed for Server 'H03IN-PC'. "
Operation="Backup"
ProductName="Microsoft SQL Server"
Source="Microsoft.SqlServer.Smo"
StackTrace:
at Microsoft.SqlServer.Management.Smo.Backup.SqlBacku p(Server srv) at Nezam_Mohandesi_Sari.FRM_BK.ButtonX2_Click(Object sender, EventArgs e) in C:\Users\h03in\Desktop\komail-2\h03in\Nezam_Mohandesi_Sari\Nezam_Mohandesi_Sari\ Forms\FRM_BK.vb:line 68 at System.Windows.Forms.Control.OnClick(EventArgs e) at DevComponents.DotNetBar.ButtonX.OnClick(EventArgs e) at DevComponents.DotNetBar.ButtonX.OnMouseUp(MouseEve ntArgs e) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at DevComponents.DotNetBar.PopupItemControl.WndProc(M essage& m) at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(ApplicationCo ntext context) at Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.OnRun() at Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.DoApplicationModel() at Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.Run(String[] commandLine) at Nezam_Mohandesi_Sari.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context( Object state) at System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
InnerException: Microsoft.SqlServer.Management.Common.ConnectionFa ilureException
Message="Failed to connect to server .."
Source="Microsoft.SqlServer.ConnectionInfo"
StackTrace:
at Microsoft.SqlServer.Management.Common.ConnectionMa nager.Connect() at Microsoft.SqlServer.Management.Common.ConnectionMa nager.PoolConnect() at Microsoft.SqlServer.Management.Common.ConnectionMa nager.get_ServerVersion() at Microsoft.SqlServer.Management.Smo.ExecutionManage r.GetServerVersion() at Microsoft.SqlServer.Management.Smo.Backup.Script(S erver targetServer) at Microsoft.SqlServer.Management.Smo.Backup.SqlBacku p(Server srv)
InnerException: System.Data.SqlClient.SqlException
Class=20
ErrorCode=-2146232060
LineNumber=0
Message="A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"
Number=2
Server=""
Source=".Net SqlClient Data Provider"
State=0
StackTrace:
at System.Data.ProviderBase.DbConnectionPool.GetConne ction(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetCo nnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenCo nnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.SqlServer.Management.Common.ConnectionMa nager.InternalConnect(WindowsIdentity impersonatedIdentity) at Microsoft.SqlServer.Management.Common.ConnectionMa nager.Connect()
InnerException:

sari-1369
30-10-2009, 01:08
از این کد هم استفاده کردم :





برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



ولی این خطا رو میگیره :






Could not locate entry in sysdatabases for database 'Nezam_DB'. No entry found with that name. Make sure that the name is entered correctly. BACKUP DATABASE is terminating abnormally.



System.Data.SqlClient.SqlException was unhandled
Class=16
ErrorCode=-2146232060
LineNumber=1
Message="Could not locate entry in sysdatabases for database 'Nezam_DB'. No entry found with that name. Make sure that the name is entered correctly. BACKUP DATABASE is terminating abnormally."
Number=911
Procedure=""
Server="\\.\pipe\7B3DA5D6-4DEB-48\tsql\query"
Source=".Net SqlClient Data Provider"
State=11
StackTrace:
at System.Data.SqlClient.SqlConnection.OnError(SqlExc eption exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnErro r(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndW arning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQuer yTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNo nQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Nezam_Mohandesi_Sari.FRM_BK.ButtonX2_Click(Object sender, EventArgs e) in C:\Users\h03in\Desktop\komail-2\h03in\Nezam_Mohandesi_Sari\Nezam_Mohandesi_Sari\ Forms\FRM_BK.vb:line 78 at System.Windows.Forms.Control.OnClick(EventArgs e) at DevComponents.DotNetBar.ButtonX.OnClick(EventArgs e) at DevComponents.DotNetBar.ButtonX.OnMouseUp(MouseEve ntArgs e) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at DevComponents.DotNetBar.PopupItemControl.WndProc(M essage& m) at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(ApplicationCo ntext context) at Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.OnRun() at Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.DoApplicationModel() at Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.Run(String[] commandLine) at Nezam_Mohandesi_Sari.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context( Object state) at System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
InnerException:

sari-1369
30-10-2009, 01:10
راستی ، اگر میشه در مورد restor کردنش هم یه توضیح بدید . من کدی ندیدم

mahdi7s
30-10-2009, 10:49
در همین تاپیک هر دو کد درست backup و restore توسط دوست عزیز _H2_ گذاشته شده و نیازی هم به استفاده از smo ندارد.

در پست 7 نمونه کد backup و در پست 14 نمونه کد restore قابل مشاهده هستند.

در مورد خطاهایی هم که گرفتید احتمالا از اتچ نکردن دیتابیس می باشد. اتچش کنید!

sari-1369
30-10-2009, 22:07
مشکلم حل شد .

از همگی ممنونم

3minar
15-02-2010, 13:27
سلام
متاسفانه این پیغام میتواند طیف وسیعی از دلایل را شامل شود
از باگ 921106 داخلی نسخه 2005 گرفته تا برسد به مشکل تنظیمان غیر صحیح سرویس FTS ...

پیغام مذکور باید توضیحات بیشتری داشته باشد که شما باید کل اطلاعات خطا را اینحا درج کنید، شاید به یافتن دلیل کمک کند.

اما به عنوان یک راه حل ساده و آسان میتوانید از کد زیر هم استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تست کنید.



کسی می تنه VB این کد رو بهم بگه؟؟؟

_H2_
15-02-2010, 21:45
سلام

کسی می تنه VB این کد رو بهم بگه؟؟؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

bad_boy_2007
15-02-2010, 23:44
با اجازه استاد H2

من بخشی از یکی از DLL های برنامه ام را (Settings.DLL) که از مهمترین وظایف این DLL پشتیبان گیری ، بازگردانی است را در این بخش قرار دادم .

چون سیستم ما بیش از یک Conection String میتواند داشته باشد مهمترین مشکلمان در بخش بازگردانی اطلاعات امکان تغییر نام بانک اطلاعاتی نسبت به فایلهای MDF و LDF است ، همانگونه که میدانید اگر از بانک A بک آپ تهیه کنید و حتی در سیستم دیگری این فایل را بازگردانی کنید هیچ مشکلی (عموما) وجود ندارد .

ولی اگر از دیتابیش A پشتیبان بگیرید و بخواهید در دیتابیس B آنرا بازگردانی کنید ، باید آدرس فایلهای MDF و LDF آنرا نیز بدهید . برنامه فوق در بازگردانی هر دو مورد فوق صحیح عمل میکند .

این برنامه 100% تست شده و مشکلی ندارد .

بد نیست در مورد بند (Thread) AutoBackup هم نکته ای ذکر کنم . این بند وظیفه انجام پشتیبان گیری اتوماتیک در سیکل زمانی تعیین شده توسط کاربر (30 دقیقه پیش فرض) و در آدرس تعیین شده توسط کاربر (بقل فایل EXE در پوسه AutoBackup پیش فرض) را بر عهده دارد ، وضعیت اجرایی این بند توسط AutoBKStatus قابل تشخیص است . نام بانک اطلاعاتی و سرور را این بند در زمان لازم از طریق CLSConnection.ConnectionString دریافت میکند .

این برنامه در شبکه تست شده و مشکلی ندارد ، فقط باید سرور به مسیرهای پشتیبان یا بازگردانی دسترسی داشته باشد .

تکثیر و حق استفاده این برنامه بدون اجازه از ناشر مجاز است !


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فضای مناسبی برای آپلود گیر نیاوردم ، اگر کسی فضای مناسب دارد آنجا آپ کند . فعلا که برای دانلود از RapidShare خیلی مکافات میکشیم !!!

bad_boy_2007
16-02-2010, 00:02
یک نکته را فراموش کردم

یادم می آید روزی که داشتم کد Restore را مینوشتم حدود نصف روز یا یک روز به پیغام خطا برخورد میکرد . متن خطا را حضور ذهن ندارم ولی یک چیزی تومایه های واژه فارسی "بازگردانی اطلاعات با شکست روبرو شد" بود ، همانطور که میبینید از این متن هیچ استفاده و کمکی جهت رفع خطا نمیتوان کرد . مطمئنم که حداقل نصف دوستانی که اقدام به پشتیبان گیری و بازگردانی میکنند با این متن مواجه میشوند .
نکته ای که وجود دارد اینست که باید تا آخرین Inner Exception متن های خطار را بخوانید تا به متن واقعی خطا مثلا "آدرس مورد نظر وجود ندارد" برسید ، که در این سورس این کار انجام شده و متنی که برای رفع خطا کمک میکند داده میشود .

3minar
20-02-2010, 22:21
یه سوال فنی!!

اگه روی دیتابیس پسورد بذاریم و بکاپ بگیریم، بعد برای Restore کردنش روی هر سیستمی پسورد می خواد؟؟

_H2_
21-02-2010, 01:08
سلام

اگه روی دیتابیس پسورد بذاریم و بکاپ بگیریم، بعد برای Restore کردنش روی هر سیستمی پسورد می خواد؟؟
یک رمز خود دیتابیس است که در ConnectionString می آید.
این رمز ارتباطی با فایل پشتیبان گرفته شده ندارد.

در محل بازیابی هم ConnectionString شما در همانجا باید صحیح باشد و Connection امکان Open شدن داشته باشد.
که این شامل رمز صحیح در مقصد با توجه به شرایط همانجا میشود.

کلاً این مورد فقط به رشته ConnectionString مربوط میشود که باید همیشه صحیح باشد.

=====

ولی شما به صورت جداگانه میتوانید برای فایل پشتیبانتان رمز مشخص کنید که در زمان بازیابی این رمز را باید داشته باشید.
که شبیه رمزی میماند که روی فایل zip ای میگذارید!!! و در زمان extract آن را باید داشته باشید.

3minar
21-02-2010, 13:46
درسته، حق با شماست. ولی می شه توضیح بدید چطوری می تونم همونجور که گفتید بصورت جداگانه روی دیتابیس پسورد بذارم؟؟

من باید امنیت برنامه ای که می نویسم بالا باشه که اگه کسی بکاپ گرفت و برد روی سیستم دیگه راحت نتونه اطلاعات رو Restore کنه !!

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

3minar
28-02-2010, 10:31
کسی جوابمو نمی ده؟؟؟

_H2_
01-03-2010, 00:11
سلام
خیلی خیلی میبخشید ... !:11:
نمیدانم چرا اصلاً متوجه نشده بودم!!!!! :18:

توجه کنید که رمزعبور داشتن دیتابیس ربط مستقیمی به Backup/Restore ندارد.

برای گرفتن backup رمز لوگین به دیتابیس لازم است.
ولی بعد که Backup ساخه شد دیگر فرد نیازی به رمزدیتابیس شما ندارد و میتواند هر کجا که خواست Restore کند.
البته در زمان Restore هم داشتن رمز رایانه مقصد لبازم است.

ولی فردی که فایل Backup را داشته باشد میتوان آن را در رایانه خودش Restore کند که یا رمز ندارد یا رایانه خودش است و آن را میداند!!

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

برای ساخت لوگین و مرز گذاشتن و... میتوانید فرمانی مثل این را دنبال کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این کد یک لوگین با نام Username و رمز PPP برای دسترسی به دیتابیس DatabaseName ایجاد میکند.

میتوانید برای لوگین sa هم رمز بگذارید.

میتوانید با برنامه SQL Server Management Studio و چند کلیک در قسمت Security->Logins برای لوگین ها رمز بگذارید.

و...

=====

البته خود فایلهای Backup هم میتوانند رمز مستقل داشته باشند، مثل رمز فایل zip که از محتوات خودش محافظت میکند.
این رمز هیچ ربطی به رمز دیتابیس ندارد و فردی که Backup را گرفته میتواند در صورت دلخواه روی ان رمز بگذارد.

با برنامه نویسی SMO هم Backup بگیرید میتوانید با متد SetPassword برای فایل Backup رمز بگذارید.

با برنامه نویسی و دستور BACKUP DATABASE هم ...

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.

mamad_it
20-08-2010, 19:02
سلام

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

Cannot open backup device 'C:\name'. Device error or device off-line. See the SQL Server error log for more details.
BACKUP DATABASE is terminating abnormally.

من از پروسیجر استفاده کردم که به صورت زیر است

CREATE PROCEDURE MeakBackUp
@Path nvarchar(100)
as
BACKUP DATABASE [nametable] TO DISK=@Path with INIT
GO

کمک کنید ممنون

_H2_
25-08-2010, 01:40
سلام

Device error or device off-line
ضمن تبریک عضویت شما، مشکل شما مربوط به سطح دسترسی و مجوز اکانتی میشود که SQLServer از آن اجرا میشود.
یعنی اکانت SQLServer مجوز دسترسی به محل مورد نظر را ندارد.

یا باید اکانت SQLServer یا مجوزهای آن را اصلاح کنید تا به محل مورد نظر دسترسی داشته باشد.
یا باید فایل backup را در جایی تشکیل دهید که اکانت SQLServer مجوز دسترسی به ان نقطه را داشته باشد.



برای مورد اول لینک زیر را مطالعه کنید و اگر سوالو مشکلی داشتید همینجا مطرح کنید:
support.microsoft.com/kb/207187

برای مورد دوم و مخصوصاً در سیستم عامل های Vista و Win7 پیشنهاد میکنم فایل را در درایو دیگری غیر C (مثل درایو D) تشکیل دهید.

موفق باشید.

sareh_tt
01-09-2010, 13:05
سلام به همگی
من برای بازیابی از کد زیر استفاده کردم

ALTER DATABASE [Pc_Store] SET SINGLE_USER
DECLARE @FileName nvarchar(50);
set @FileName='E:\New Pc_Store\BackUpالخميس, أوت 19, 2010.bak';
RESTORE DATABASE [Pc_Store] FROM DISK =@FileName WITH REPLACE , NOUNLOAD , STATS = 10, RECOVERY

اما خطای زیر رو میده لطفا راهنمایی کنید


ALTER DATABASE statement failed.

amir_3d_mad
02-09-2010, 18:35
آقا به نظر من بهتر است یکی از اساتید لطف کند و یک نمونه کد برای این کار در اختیار ما مبتدیها قرار دهد !

من خودم نیز به دفعات زیادی دچار این مشکل شده ام ولی دریغ از حل این مشکل !

یک سوال دیگر هم داشتم : من میخواهم امکان ذک آپ و ریستور را به ادمین سایتم بدهم تا او با زدن دکمه ای بکآپ دیتابیس را بر روی هاست ایجاد کند و نیز با انتخاب آن بک آپ بتواند آنرا ریستور کند !

چیزی که متوجه نمیشوم مسیری است شما برای بک آپ تعریف میکنید ! یعنی درایو C !

pezhmax
02-09-2010, 22:20
دلیل عدم کارایی بسیاری از نمونه کدهای موجود برای restor کردن دیتابیس اینه که زمان اجرای دستور restor نباید هیچ connection بازی رو دیتابیسی که داره ازش restor گرفته میشه وجود داشته باشه. حالا اکثرا میان یه دستور sql برای restor کردن مینویسند(مثل کد پست بالا) و اونو با یه connection رو دیتابیس خودشون اجرا میکنن. خوب تو همین مرحلیه اجرای کد یه اتصال باز با همون دیتا بیس ایجاد میشه و باعث میشه که عمل restor انجام نشه. برای این کار یه کلاس سری کلاس تو دات نت وجود داره که تو فضای نام Microsoft.SqlServer.Management.Smo قرار داده شدن. همه کلاسهای تو فضای نام SMO برای مدیریت دیتابیسهای sql server ایجاد شدن.
تو این مقاله توضیح restor و backup دیتابیس از طریق این کلاسها اومده :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
03-09-2010, 04:47
سلام


من برای بازیابی از کد زیر استفاده کردم
ALTER DATABASE [Pc_Store] SET SINGLE_USER
DECLARE @FileName nvarchar(50);
set @FileName='E:\New Pc_Store\BackUpالخميس, أوت 19, 2010.bak';
RESTORE DATABASE [Pc_Store] FROM DISK =@FileName WITH REPLACE , NOUNLOAD , STATS = 10, RECOVERY

اما خطای زیر رو میده لطفا راهنمایی کنید
ALTER DATABASE statement failed.

در این مرحله دستور ALTER DATABASE-SINGLE_USER به شما کمک نمیکند.
حداقل مخزن داخلی Connection های ADO.Net را تخلیه کنید.
و بعد همان دستور Restore خودتان را اجرا کنید.

این تاپیک بیشتر روی دستور SQL-RESTORE DATABASE متمرکز است ولی تاپیک قدیمی تر دیگری هم برای این بحث در تالار وجود دارد که بیشتر روی SMO متمرکز بوده است.

در پست 20 ، روش خالی کردن مخزن داخلی Connection های ADO.Net بیان شده.
(که بدرد دوستان در این تاپیک هم میخورد.)
انجام این عمل قبل از restore الزامی است.

در پست آخر هم دوستان میتوانند سمپل ساده ای از کار با SMO2005 پیدا کنند.
(البته جناب pezhmax هم سمپلی در پست قبل ارائه کردند.)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

موفق باشید.

amir_3d_mad
09-09-2010, 18:27
آقا به نظر من بهتر است یکی از اساتید لطف کند و یک نمونه کد برای این کار در اختیار ما مبتدیها قرار دهد !

من خودم نیز به دفعات زیادی دچار این مشکل شده ام ولی دریغ از حل این مشکل !

یک سوال دیگر هم داشتم : من میخواهم امکان ذک آپ و ریستور را به ادمین سایتم بدهم تا او با زدن دکمه ای بکآپ دیتابیس را بر روی هاست ایجاد کند و نیز با انتخاب آن بک آپ بتواند آنرا ریستور کند !

چیزی که متوجه نمیشوم مسیری است شما برای بک آپ تعریف میکنید ! یعنی درایو C !


سلام .

من باز به نتیجه نرسیدم !

من نمیدونم این کار رو در محیط وب چطوری باید انجام بدم .

لطفا یکی یک کمک اساسی بکنه .
مرسی .

_H2_
15-09-2010, 22:50
سلام

من نمیدونم این کار رو در محیط وب چطوری باید انجام بدم
اصولاً تحت وب هم فرقی ندارد فقط کافی است ...

1) با MapPath آدرس محل مناسبی در سرور را بدهید.

2) باید به زمان [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] دقت کنید و ان را افزایش دهید تا برنامه فرصت مناسب برای کار داشته باشد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

3) باید permissions پوشه محل پشتیبان گیری را تنظیم کنید، تا sqlserver امکان دسترسی به ان محل را داشته باشد.
این شاید یکی از مهم ترین کارها باشد که افراد اصلاً به ان دقت نمیکنند.
برای این کار باید به controlpanel سایتان مراجعه کنید و مجوزهای ان پوشه را تنظیم کنید.
در صورت داشتن مشکل در این بخش میتوانید با هاستینگتان تماس بگیرد.

موفق باشید.

3minar
02-10-2010, 16:22
سلام.
من از دیتابیسم با برنامه با همون کد چند صفحه پیش بکاپ گرفتم ولی الان با کد که میخوام بکاپ رو Restor کنم ارور میده. اگر کمکم کنید ممنون میشم.

این ارور :
RESTORE cannot process database 'Sandogh' because it is in use by this session. It is recommended that the master database be used when performing this operation. RESTORE DATABASE is terminating abnormally.

اینم کدی که ازش استفاده کردم :

Dim sql As String = "RESTORE DATABASE Sandogh FROM DISK=' G:\ee.bak ' WITH REPLACE"
Using dbcon As New System.Data.SqlClient.SqlConnection("Data Source=.;Initial Catalog=Sandogh;Integrated Security=True")
Using dbcom As New System.Data.SqlClient.SqlCommand(sql, dbcon)
dbcon.Open()
dbcom.ExecuteNonQuery()
End Using
End Using

3minar
04-10-2010, 09:36
کسی جواب سوالم رو میدونه؟؟؟؟!؟

_H2_
04-10-2010, 17:59
سلام
طبق پیام SQLServer شما هنوز حداقل یک Connection باز دیگر به دیتابیس دارید.
سعی کنید همه Connection های باز اضافی را Close کنید و مخزن داخلی Connection ها را هم با دستور ClearAllPools خالی کنید. ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

در صورت ادامه مشکل میتوانید دیتابیس را به طور اجباری به مد تک کاربره سوییچ کنید: (قبل Restore)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای بازگشت بهحالت عادی هم میتوانید دستور زیر را اجرا کنید: (بعد Restore)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.

3minar
05-10-2010, 14:18
ممنون دوست من اما من هنوز مشکلم حل نشده. اون کد System.Data.SqlClient.SqlConnection.ClearAllPools رو قبل از کد restore گذاشتم ولی باز همون ارور قبل رو داد و این 2تا مدی که بالا گذاشتید ظاهرا برای زبان C هست. اگر VB این 2تا کد رو بهم بدید ممنون میشم. و اینکه این 2تا کد رو همینجوری قبل و بعد از دستوراتم بذارم درست میشه؟؟؟؟
ببخشید انقدر سوال می پرسم.:11:

_H2_
09-10-2010, 01:07
سلام
شاید از نسخه EXPRESS و در حالت غیر Attach استفاده میکنید، که در این شرایط دقت بیشتری لازم است.
کد زیر را امتحان کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

3minar
10-10-2010, 17:30
متأسفانه باز هم همون ارور. الان چک کردم دیتابیس به مد تک کاربره رفته ولی باز هم ارور میده. عکسش رو هم میذارم شاید کمکی کنه!!!:41:


لینک عکس :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

pezhmax
10-10-2010, 18:19
این مقاله رو تو چند تا پست قبلی هم گذاشته بودم. ولی ظاهرا مشکل حل نشده. کسی اصلا امتحان کرده این روشی رو که توضیح داده یا هنوز باهاش مشکل دارین؟

-------------------------------------------------------------------------------------------
دلیل عدم کارایی بسیاری از نمونه کدهای موجود برای restor کردن دیتابیس اینه که زمان اجرای دستور restor نباید هیچ connection بازی رو دیتابیسی که داره ازش restor گرفته میشه وجود داشته باشه. حالا اکثرا میان یه دستور sql برای restor کردن مینویسند(مثل کد پست بالا) و اونو با یه connection رو دیتابیس خودشون اجرا میکنن. خوب تو همین مرحلیه اجرای کد یه اتصال باز با همون دیتا بیس ایجاد میشه و باعث میشه که عمل restor انجام نشه. برای این کار یه کلاس سری کلاس تو دات نت وجود داره که تو فضای نام Microsoft.SqlServer.Management.Smo قرار داده شدن. همه کلاسهای تو فضای نام SMO برای مدیریت دیتابیسهای sql server ایجاد شدن.
تو این مقاله توضیح restor و backup دیتابیس از طریق این کلاسها اومده :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
-------------------------------------------------------------------------------------------

_H2_
10-10-2010, 21:07
سلام

متأسفانه باز هم همون ارور. الان چک کردم دیتابیس به مد تک کاربره رفته ولی باز هم ارور میده. عکسش رو هم میذارم شاید کمکی کنه!!!
کد را چنین اصلاح کنید، (همین الآن هم آزمایشش کردم)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.

3minar
11-10-2010, 13:38
ممنون از استاد خوبم _H2_ عزیز و دوست خوبم pezhmax که راهنمایی خوبی کردند. الان کد بالا که _H2_ عزیز گذاشتند رو امتحان کردم و کاملا جواب داد و ممنون به خاطر لطف و راهنمایی شما عزیزان که هیچوقت منو از راهنماییهاتون بی دریق نذاشتید. با هم ممنون