ورود

View Full Version : restor کردن BackUp دیتابیس در اسکیوال 2000 بدون بستن برنامه



mahdy.asia
سه شنبه 04 مهر 1391, 22:08 عصر
چطور می تونم backup دیتابیس رو بدون اینکه از برنامه خارج شوم رو برگردونم

حمیدرضاصادقیان
سه شنبه 04 مهر 1391, 23:21 عصر
سلام
شما برای اینکار یا باید با استفاده از دستور Kill و تغییر Connection به دیتابیس Master اینکارو بکنید یا با استفاده از یک Connection جدید دیگه که به دیتابیس Master وصل هست اینکارو بکنید که در این حالت نیز باید Connection های فعال به دیتابیس مورد نظر رو از بین ببرید.
با استفاده از جدول sysproccess میتوانید جزئیات ارتباطات به دیتابیس رو پیدا کنید.

mahdy.asia
پنج شنبه 13 مهر 1391, 08:14 صبح
من کانکشن برنامه رو می بندم
کد زیر را بوسیله یک ADOQuery که به کانکشن دیگری متصل است اجرا می کنم

RESTORE DATABASE NicDB
FROM DISK = 'E:\Acc910713.Mtbi'
WITH MOVE 'MdnHesabDB_Data' TO 'E:\MtbiMis\Acc\ExecFile\NicDB.mdf',
MOVE 'MdnHesabDB_Log' TO 'E:\MtbiMis\Acc\ExecFile\NicDB.ldf' ,
PASSWORD = '8380' Select 1
خطای use بودن دیتابیس برمی گردد چه کدی و کجا می بایست اضافه کنم ؟

mannai29
پنج شنبه 13 مهر 1391, 15:59 عصر
اگه یک سری به جدول sysproccess در دیتابیس master بزنید کانکشن ها رو می بینید و بعدش می تونید اونایی که به دیتابیس شما وصلن رو kill کنید.

mahdy.asia
جمعه 14 مهر 1391, 05:40 صبح
من با راهنمایی شما کد مورد نظر رو نوشتم مشکلی هم نداشت اما با وجود اینکه هنگامی که وارد فرم شدم کانشن را بستم و هنگام اتمام کار و خارج شدن از فرم کانکشن را باز کردم باز هم برنامه کار نمی کرد.
برای اینکه بعد از عملیات restore مشکلی در برنامه بوجود نیاید چه کارهایی برای کانکشن انجام دهم (من کل نرم افزارم از یک کانکشن استفاده می کند و فرم restore بک آپ هم از کانکشن جدا برای خود)

mahdy.asia
شنبه 15 مهر 1391, 21:49 عصر
من می خواهم از داخل برنامه کاربر بک آپ را restore کنه و بعد از اتمام کار restore بدون خارج شدن از برنامه کار خودش رو ادامه بده
کدی که من نوشتم و بدون مشکل بک آپ رو restore می کنه
اما بعد از اتمام restore کانکشن برنامه نیز مشکل دار می شود و حتما می بایست از برنامه خارج شوم و دوباره برنامه را اجرا نمایم لطفا راهنمایی کنید جظور مشکل را بر طرف نمایم

Use Master

Declare @Id Int
Declare @cmd Varchar(1000)

Declare c Cursor For
Select spid
From master..sysprocesses
Where hostname <> ''

Open c


Fetch Next From c Into @Id

While(@@FETCH_STATUS<>-1)
Begin If(@Id <> @@SPID)
Begin
Select @cmd = 'Kill ' + Cast(@Id as Varchar)
Execute(@cmd)
End
Fetch Next From c Into @Id
End

Close c
Deallocate c
RESTORE DATABASE NicDB
FROM DISK = 'E:\Acc910713.Mtbi'
WITH
MOVE 'MdnHesabDB_Data' TO 'E:\data\NicDB.mdf',
MOVE 'MdnHesabDB_Log' TO 'E:\data\NicDB.ldf',
PASSWORD = '8380' ,REPLACE Select 1

حمیدرضاصادقیان
چهارشنبه 19 مهر 1391, 08:33 صبح
ببینید شما میتونید یک Connection دومی داشته باشید و با اون کار Restore رو انجام بدید و پس از اینکه این عمل انجام شد دوباره Connection اصلی رو ایجاد کرده و وارد برنامه شوید.

mahdy.asia
دوشنبه 24 مهر 1391, 03:12 صبح
من دو تا کانکشن دارم با کانکشن رستور عملیات رستور را انجام می دهم اما بعد از اینکه به داخل برنامه بر می گردم کانکشن برنامه نه تنها کار نمی کند حتی قبل از اینکه وارد فرم رستور بشم کانکشن برنامه را می بندم و وقتی از فرم رستور خارج می شوم دیگر نمی توانم کانکشن را باز کنم حالا کار دیگه ایی هم می بایست انجام دهم لطفا توضیح دهید