PDA

View Full Version : Restoreکردن بانک SQLدر زمان اجرای برنامه.



SYNDROME
چهارشنبه 31 مرداد 1386, 22:14 عصر
با سلام
بنده زمانی که برنامه در حال اجرا است می خواهم backupرا که از بانک گرفته ام Restoreکنم.
اگر برنامه در حالت اجرا نباشد دستور زیر را در QueryAnalayzerمی نویسم و مشکلی پیش نمی آید.


Restore DATABASE Test
FROM DISK = 'D:\Test.Bak'

حالا برنامه را اجرا می کنم و دستور فوق را در دلفی می نویسم ولی پیغام خطای زیر را نمایش می دهد.
Exclusive access could not be obtained because the database is in use.
در زمان اجرای برنامه دیگر حتی حتی در QueryAnalayzerنیز نمی توانم و باز هم پیغام بالا را می دهد.
در دلفی حتی قبل از اجرای دستور فوق Use Masterرا نیز می نویسم ولی باز هم جواب نمی دهد.
قبلا همین دستورات کار می کرد(در دلفی 7)ولی حالا نمی دانم به خاطر دلفی 2007است یا مشکل از چیز دیگری است.
در ضمن SQL2000استفاده می کنم.
با تشکر از راهنمایی شما.

Will_Smith
چهارشنبه 31 مرداد 1386, 22:46 عصر
مو قعی که دستور رو در دلفی فراخوانی میکنی EnterPrise Manager باز هست؟

SYNDROME
پنج شنبه 01 شهریور 1386, 13:38 عصر
با سلام

مو قعی که دستور رو در دلفی فراخوانی میکنی EnterPrise Manager باز هست؟
بله باز است.
ولی بستم باز هم تست کردم درست نشده و پیغام بالا را نمای داد.
منتظر نظرات دوستان هستم.
با تشکر

m-khorsandi
جمعه 02 شهریور 1386, 00:52 صبح
از پیغام خطا مشخص هست که عمل Restore کردن به خاطر Use بودن DB مورد نظر بی‌نتیجه می‌ماند.
این دستور رو با چه کامپوننتی اجرا می‌کنی؟
همه کامپوننتها به یک ADOConnection وصلند؟

SYNDROME
جمعه 02 شهریور 1386, 07:35 صبح
با سلام
بر آقا محمد گل.


این دستور رو با چه کامپوننتی اجرا می‌کنی؟

با ADOQuery.


همه کامپوننتها به یک ADOConnection وصلند؟


ADO.SQL.Text := 'Use Master';
ADO.ExecSQL;

DM_Main.ADO_BackUp.SQL.Clear;
DM_Main.ADO_BackUp.SQL.Add(' Restore DATABASE Kar');
DM_Main.ADO_BackUp.SQL.Add(' FROM DISK = '''+OpenDialog1.FileName+'''');
DM_Main.ADO_BackUp.ExecSQL;

ADOبه ADOConnectionمربط به Karوصل است که دستور Use را اجرا می کند.
ADO_BackUp به ADOConnectionمربوط به Mainوصل است که می خواهد Kar را Restore کنم.
با تشکر
منتظر نظرات شما هستم.

vcldeveloper
جمعه 02 شهریور 1386, 12:11 عصر
ADOConnection ایی که به Kar متصل است را غیرفعال کنید. شما با استفاده از ConnectionString موجود در ADOConnection به دیتابیس Kar وصل شدید، اجرای USE MASTER توسط DataSet، موجب قطع اتصال ADOConnection از دیتابیس Kar نمی شود.
ADOConnection اول را غیرفعال کنید و با ADOConnection دوم به دیتابیس Master متصل شوید و عمل Restore را انجام دهید.