نمایش نتایج 1 تا 26 از 26

نام تاپیک: مشکل در restore کردن

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51

    مشکل در restore کردن

    سلام!
    من دستورات زیر را جهت restore کردن بانک
    وارد کردم
    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='CREATE
    DATABASE Mbackup ';
    DataModule141.ADOCommand1.Execute;


    pathe:=FileListBox8.FileName;
    s:=pathe;
    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='RESTORE DATABASE Mbackup FROM DISK='+char(39)+s+char(39);
    DataModule141.ADOCommand1.Execute;

    اما در هنگام restore کردن پیغام خطای زیر را می دهد.(باید این نکته را در نظر داشته باشید که بانک اصلی من که از آن backup گرفته شده به نام vb و بانک خالی ایجاد شده به نام Mbackup و نام فایل پشتیبان به نام Mbackup2006528.bak می باشد)

    the databaseto be restore was named "vb " .reissue the statement using the WITH
    REPLACE option to overwrite the Mbackup database

    چگونه مشکل فوق را حل کنم ؟

    در ضمن چه دستوری در delphi می توانم بکار ببرم که مشخص کند بانک اطلاعاتی خاصی در sql می باشد ؟

    متشکرم

  2. #2
    کاربر دائمی آواتار farideh_en
    تاریخ عضویت
    مهر 1384
    محل زندگی
    زنجان
    سن
    43
    پست
    161
    سلام
    دوست عزیز آیا موقع resotr کردن از databaseتون که استفاده نمیکنین؟نا اونجا که میدونم موقع restor کردن نباید برنامتون فعال باشه!!

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام!
    نه ، من اصلا" از بانک اصلی که vb می باشد درهنگام restore کردن استفاده نمی کنم . و همانطور که دیدید ابتدا یک بانک جدید ایجاد می کنم و سپس بانک پشتیبان را Restore می کنم و می ریزم روی بانک جدیدم

  4. #4
    چون بانک رو می سازید و فایلهای اون وجود دارند و روی آنها دارید restore می کنید باید به همراه دستور restore از کلید with replace استفاده کنید که در BOL کاملا توضیح داده شده .

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام !
    متشکرم . ولی نمی دانم دقیقا" کجا را جستجو کنم اگر ممکن است ، کد کامل restore کردن را برای من ارسال نمایید و یا راهنمایی کامل تری بکنید .

    من دستورات زیر را جهت backup و restore کردن وارد کردم ولی..

    backup
    decodedate(date,year,mon,day);
    edit1.Text:= INTTOSTR(year)+INTTOStr(mon)+inttostr(day) ;
    name:='vb2'+ edit1.Text+'.bak';
    path:=pathe+'\'+name;
    x:='BACKUP DATABASE vb TO DISK='+ char(39)+ path + char(39);
    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:=x;
    DataModule141.ADOCommand1.Execute;
    ShowMessage('پÔÊíÈÇ&#228 ;í ÇÒ ÈÇä˜ ÇØáÇÚÇÊ&#237 ; ÈÇ ãæÝÞíÊ ÇäÌÇ㠐ÑÏíÏ');

    restore

    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='CREATE DATABASE vb2 ';
    DataModule141.ADOCommand1.Execute;

    ShowMessage(' پÇíÇå ÏÇÏå ãæÝÞíÊ ÂãíÒ ÓÇÎÊå ÔÏ');

    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='Use Master';
    DataModule141.ADOCommand1.Execute;

    pathe:=FileListBox8.FileName;
    s:=pathe;
    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='RESTORE DATABASE vb2 FROM DISK='+char(39)+s+char(39);
    DataModule141.ADOCommand1.Execute;

    ShowMessage('ÝÇíá پÔÊíÈÇä ãæÝÞíÊ ÂãíÒ ÇÍíÇ ÔÏ');

    بااین وجود باز هم خطای

    the databaseto be restore was named "vb " .reissue the statement using the WITH
    REPLACE option to overwrite the Mbackup database

    را می دهد . لطفا" راهنمایی نمایید چطوری این مشکل را رفع کنم
    آخرین ویرایش به وسیله kathy11ir : دوشنبه 08 خرداد 1385 در 22:53 عصر

  6. #6
    اگر از دستور RESTORE استفاده میکنید که باید WITH REPLACE بدین، اما اگر با کمک خود EM دارید Restore انجام میدین، در قسمت Options، آیتمی به اسم Force Restore داره که باید انتخاب کنین

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    چگونه و کجا with replace را اضافه نمایم ، در صورت امکان یک مثال بزنید

    متشکرم

  8. #8

    RESTORE DATABASE MyDB FROM DISK='c:\mybakup.bak' WITH REPLACE

  9. #9
    کاربر دائمی آواتار farideh_en
    تاریخ عضویت
    مهر 1384
    محل زندگی
    زنجان
    سن
    43
    پست
    161

    restor

    با سلام
    منم مشکل همین دوستمون دارم یعنی می خوام از داخل برنامه دلفی از database ام که sql server 2000 هست database را restor کنم ولی error ای که میده این پیغام هستش:
    Exclusive access could not be obtained because the database is in use.
    البته من در sp از command زیر استفاده کردم :
    Restore Database amval
    from Disk='c:\backup\backupdb.bak'
    with File=1,
    MOVE 'Rest_data' to 'c:\amval.mdf',
    MOVE 'Rest_log' to 'c:\amval.ldf',
    STANDBY='c:\amval', REPLACE

    میخواستم بدونم اصلاٌ میشه از داخل برنامه دلفی کارrestor را موقعی که برنامه در حال اجراست انجام داد؟ اگه امکانش هست ممنون میشم راهنمایی کنید

  10. #10
    کاربر دائمی آواتار ali_kolahdoozan
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اون سر دنیا
    پست
    1,631
    میشه فقط kill user یادتون نره .

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام
    من هنوز مشکلم رفع نشده . میشه لطفا" یکی دستورات را بصورت کامل بنویسد .
    اگر باید kill user کرد . چطوری ، چگونه و با چه دستوراتی ؟
    متشکرم

  12. #12
    اول مطمئن بشید که خودتون در اون دیتابیس نیستید. مثلا USE Master انجام بدین. حالا سایر کاربرها رو Kill کنین.

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام
    من مشکل ار پیدا کردم اما نمی دانم چگونه حل کنم .وقتی restore می کنم فایل مورد نظر با نام database اصلی و در مسیر آن database می خواهد ذخیره گردد . چگونه آن مسیر را تغییر دهم ؟

    مسیر move to physical file name را چگونه در برنامه تغییر دهم ؟
    در ضمن می توانید تفاوت backup و attach کردن را بیان کنید ؟ و بگویید اگر من به جای backup از attach,deattach استفاده کنم در برنامه مشکلی بوجود می آید؟

    در ضمن دستور refresh کردن بانک اطلاعاتی را می توانید برای من ارسال نمایید؟

    متشکرم

  14. #14
    کاربر دائمی آواتار farideh_en
    تاریخ عضویت
    مهر 1384
    محل زندگی
    زنجان
    سن
    43
    پست
    161
    سلام من از دستور use master در sp استفاده کردم ولی error میده میشه کاملتر راهنمایی کنین.ممنون/

  15. #15
    Backup حالتهای گوناگون داره. مثلا در Complete Backup تمام فایلهای دیتابیس بصورت فشرده تبدیل به یک فایل میشن. اما زمانیکه Attach میکنید، خود فایل اصلی دیتابیس رو به SQL Server ملحق میکنید. اما Backup حالتهای دیگه ای میتونه داشته باشه. مثلا Differential Backup. در این حالت فقط از تغییراتی که دیتابیس از زمان آخرین Complete Backup داشته Backup تهیه میشه، لذا برای Restore کردنش، به فایل Backup قبلی هم نیاز دارید. اگر برای انتقال برنامتون به کامپیوتر مشتری دارید سوال میکنید، Attach کردن مشکلی نداره. اما این روش برای جایی که دیتابیسشون در حاله کاره، برای Backup گیری استفاده نمیشه چون Detach کردن کار تمام کابرها رو مختل میکنه.
    دستور Refresh کردن دیتابیس وجود نداره؛ چون اساسا Refresh کردن دیتابیس معنی نداره و همیشه دیتابیس شما کاملا Fresh هستش!
    درد مورد تغییر مسیر move to physical file name، شما دستور Restore رو میتونین به شکل یک String در برنامه بسازید و آدرس مورد نظر رو در این String جایگذاری کنید، سپس توسط ADO به SQL Server بفرستید تا اجرا بشه.
    دستور USE Master چه خطایی میده؟ لطفا پست کنید..

  16. #16
    کاربر دائمی آواتار farideh_en
    تاریخ عضویت
    مهر 1384
    محل زندگی
    زنجان
    سن
    43
    پست
    161
    در ضمن errore برنامه the database 'amval' because it is currently in use. میباشد

  17. #17
    دوست عزیز
    بعد از اجرای کد، دستور EXEC SP_WHO رو در QA اجرا کنین و ببینید آیا واقعا کسی در دیتابیس مورد نظر وجود داره یا خیر

  18. #18
    کاربر دائمی آواتار farideh_en
    تاریخ عضویت
    مهر 1384
    محل زندگی
    زنجان
    سن
    43
    پست
    161

    تشکر

    جناب آقای sobati ممنونم از راهنماییهای ارزشمندتون.
    موفق باشین.

  19. #19
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام

    مشکل من در یک مورد حل گردید اما باز در همین مورد با مشکل دیگری روبرو شدم.
    من در QA دستور زیر را وارد می کنم . و برنامه درست عمل می کند .

    use master
    RESTORE FILELISTONLY
    FROM DISK = 'C:\vb2200662.bak'

    RESTORE DATABASE vb2
    FROM DISK = 'C:\vb2200662.bak'
    WITH MOVE 'vb_Data' TO 'C:\vb2.mdf',
    MOVE 'vb_Log' TO 'C:\vb2.ldf'

    اما وقتی می خواهم این دستور را در برنامه دلفی اعمال کنم عمل restore را انجام نمی دهد :

    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='CREATE DATABASE vb2 ';
    DataModule141.ADOCommand1.Execute;
    ShowMessage(' ÇíÇå ÏÇÏå ãæÝÞíÊ ÂãíÒ ÓÇÎÊå ÔÏ');


    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='use master' ;
    DataModule141.ADOCommand1.Execute;


    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='RESTORE FILELISTONLY FROM DISK ='+char(39)+s+char(39)+' RESTORE DATABASE vb2 FROM DISK = '+char(39)+s+char(39)+' '+' '
    +'WITH MOVE '+char(39)+'vb_Data'+char(39)+' TO '+char(39)+'C:\vb2.mdf'+char(39)+' '+', MOVE '+char(39)+'vb_Log'+char(39)+' TO '+char(39)+'C:\vb2.ldf'+char(39);

    DataModule141.ADOCommand1.Execute;


    همچنین من وقتی می خواستم که'use master' را در یک store procedure بنویسم خطا می داد که نمی توانم این کار را انجام دهم .

    چگونه می توانم ارتباط با db که در حال حاضر به برنامه متصل می باشد را قطع و سپس مجددا" وصل نمود ؟

    متشکرم

  20. #20
    دوست عزیز لطفا کدها رو داخل تگ [code] قرار بدین تا متوجه بشیم چیه!
    استفاده از دستور USE داخل SP مجاز نیست. اگر کاربرها در حال کار با دیتابیس هستند، قبل از دستور Restore، این کار رو انجام بدین:

    ALTER DATABASE MyDatabase
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    این دستور باعث میشه ارتباط تمام کاربرها با دیتابیس قطع بشه.
    برای قطع ارتباط با دیتابیس، باید Connection رو Close کنین.

  21. #21
    کاربر دائمی آواتار farideh_en
    تاریخ عضویت
    مهر 1384
    محل زندگی
    زنجان
    سن
    43
    پست
    161
    سلام دوست عزیز منم مشکل شمارو داشتم ولی با کمک دوستان آقای ثباتی و کلاهدوز حل شد. تو برنامتون یک Adoconnection بزارین و اونو به master وصل کنین و یک ADOQUERY قرار بدین که به این ADOCONNECTION وصل بشه و کد زیر را در ADOQUERY در قسمت TString بنویسید :



    SET NOCOUNT ON
    DECLARE @strSQL varchar(255)
    PRINT 'Killing Users'
    PRINT '-----------------'
    CREATE table #tmpUsers(
    spid int,
    eid int,
    status varchar(30),
    loginname varchar(50),
    hostname varchar(50),
    blk int,
    dbname varchar(50),
    cmd varchar(30))
    INSERT INTO #tmpUsers EXEC sp_who
    DECLARE LoginCursor CURSOR
    READ_ONLY
    FOR SELECT spid, dbname FROM #tmpUsers WHERE dbname ='YOUR DATABASENAM'
    DECLARE @spid varchar(10)
    DECLARE @dbname2 varchar(40)
    OPEN LoginCursor
    FETCH NEXT FROM LoginCursor INTO @spid, @dbname2
    WHILE (@@fetch_status <> -1)
    BEGIN
    IF (@@fetch_status <> -2)
    BEGIN
    PRINT 'Killing ' + @spid
    SET @strSQL = 'KILL ' + @spid
    EXEC (@strSQL)
    END
    FETCH NEXT FROM LoginCursor INTO @spid, @dbname2
    END
    CLOSE LoginCursor
    DEALLOCATE LoginCursor
    DROP table #tmpUsers
    PRINT 'Done'

    SET QUOTED_IDENTIFIER OFF
    SET ANSI_NULLS ON

    USE Master RESTORE DATABASE YOURDATABASENAME FROM DISK='C:\Backup\backupdb.BAK' WITH REPLACE



    بعد داخل برنامه دلفی یک Button قرار بدین. و بنویسین
    ;ADOQuery1.ExecSQL
    همین.
    امیدوارم که مشکل شمام حل بشه.
    موفق باشین.

  22. #22
    چرا به جای kill کردن از set single_user استفاده نمیکنید

  23. #23
    کاربر تازه وارد آواتار Arminizer_88
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    UAE-Dubai
    پست
    78

    Exclamation بازم قوانین سایت!

    نقل قول نوشته شده توسط kathy11ir
    سلام !
    متشکرم . ولی نمی دانم دقیقا" کجا را جستجو کنم اگر ممکن است ، کد کامل restore کردن را برای من ارسال نمایید و یا راهنمایی کامل تری بکنید .

    من دستورات زیر را جهت backup و restore کردن وارد کردم ولی..

    backup
    decodedate(date,year,mon,day);
    edit1.Text:= INTTOSTR(year)+INTTOStr(mon)+inttostr(day) ;
    name:='vb2'+ edit1.Text+'.bak';
    path:=pathe+'\'+name;
    x:='BACKUP DATABASE vb TO DISK='+ char(39)+ path + char(39);
    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:=x;
    DataModule141.ADOCommand1.Execute;
    ShowMessage('پ&#212;&#202;&#237;&#200;&#199;&#228 ;&#237; &#199;&#210; &#200;&#199;&#228;˜ &#199;&#216;&#225;&#199;&#218;&#199;&#202;&#237 ; &#200;&#199; &#227;&#230;&#221;&#222;&#237;&#202; &#199;&#228;&#204;&#199;&#227; �&#209;&#207;&#237;&#207;');

    restore

    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='CREATE DATABASE vb2 ';
    DataModule141.ADOCommand1.Execute;

    ShowMessage(' پ&#199;&#237;�&#199;&#229; &#207;&#199;&#207;&#229; &#227;&#230;&#221;&#222;&#237;&#202; &#194;&#227;&#237;&#210; &#211;&#199;&#206;&#202;&#229; &#212;&#207;');

    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='Use Master';
    DataModule141.ADOCommand1.Execute;

    pathe:=FileListBox8.FileName;
    s:=pathe;
    DataModule141.ADOCommand1.Parameters.ParamValues['@SQLString']:='RESTORE DATABASE vb2 FROM DISK='+char(39)+s+char(39);
    DataModule141.ADOCommand1.Execute;

    ShowMessage('&#221;&#199;&#237;&#225; پ&#212;&#202;&#237;&#200;&#199;&#228; &#227;&#230;&#221;&#222;&#237;&#202; &#194;&#227;&#237;&#210; &#199;&#205;&#237;&#199; &#212;&#207;');

    بااین وجود باز هم خطای

    the databaseto be restore was named "vb " .reissue the statement using the WITH
    REPLACE option to overwrite the Mbackup database

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

  24. #24
    کاربر جدید
    تاریخ عضویت
    تیر 1384
    محل زندگی
    Mohammad.Mirbagheri@Gmail.com
    پست
    24
    آقا واقعا دستتون درد نکنه من و خیلی کمک میکنه این کد های شما ...

  25. #25
    ممنون ما هم استفاده کردیم .

  26. #26
    ممنون ما هم بی بهره نماندیم

تاپیک های مشابه

  1. مشکل در restore کردن بانک sql
    نوشته شده توسط navidal در بخش SQL Server
    پاسخ: 7
    آخرین پست: جمعه 03 آذر 1385, 10:29 صبح
  2. restore کردن دیتابیس با کدنویسی در دلفی
    نوشته شده توسط masoumeh_61 در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: شنبه 13 خرداد 1385, 17:09 عصر
  3. فوری - مشکل جدی در ارتباط با Restore کردن
    نوشته شده توسط kathy11ir در بخش SQL Server
    پاسخ: 5
    آخرین پست: یک شنبه 07 خرداد 1385, 08:05 صبح
  4. restore کردن دیتابیس و مسائل پس از آن
    نوشته شده توسط ali_kolahdoozan در بخش SQL Server
    پاسخ: 3
    آخرین پست: جمعه 12 اسفند 1384, 23:49 عصر

قوانین ایجاد تاپیک در تالار

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