PDA

View Full Version : مشکل در Restore کردن فایل Backup



bazardeh
سه شنبه 18 مرداد 1390, 16:12 عصر
با سلام
ببخشید که تاپیک تکراری زدم من هر چی گشتم جوابمو پیدا نکردم لطفا راهنمایی بفرمایید

یه مشکل با Restore کردن پشتیبان در sql server 2000
بک آپ گیری مشکلی ندارم اما موقع برگرداند پشتیبان به خطا زیر برخورد می کنم



Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.



با تشکر

اینم کد بر گرداندن پشتیبان


try
{
SqlConnection sq = new SqlConnection("server=(local);database=RSR;integrated security=true;");
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.bak|*.bak";
if (ofd.ShowDialog() == DialogResult.OK)
{
string query = "USE [master]; RESTORE DATABASE [" + RSR + "] FROM DISK = N'" + ofd.FileName + " ' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10";
SqlCommand com = new SqlCommand(query, sq);
sq.Open();
com.ExecuteNonQuery();
sq.Close();
MessageBox.Show("بازیابی اطلاعات از پشتیبان با موفقیت انجام شد", "پیغام", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (SqlException sd)
{
MessageBox.Show("" + sd.Message + "\n" + sd.Errors, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Esmail Solhkhah
سه شنبه 18 مرداد 1390, 16:38 عصر
دوست عزیز شما موقع بازیابی دیتابیس کانکشن باز به دیتابیستون دارید

اول باید اونا رو Kill کنید تا تعداد کانکشنهای باز به 0 برسه

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

کد رو هم یه سری یکی از دوستان پرسیده بود براشون نوشتم

فقط لینک پست یادم نیس

بیزحمت سرچ کنید

موفق باشید.

bazardeh
سه شنبه 18 مرداد 1390, 17:35 عصر
من sql 2000 استفاده می کنم
فایل که فرموده بودید را دانلود کردم
و بعد اجرای اون باتون ها خطای زیر نمایش داده می شود لطفا راهنمایی بفرمائید

invlid object name 'master.sys.dm_tran_locks
invlid object name 'master.sys..database

حمیدرضاصادقیان
چهارشنبه 19 مرداد 1390, 12:56 عصر
سلام.
به جای Master.Sys..Database بنویسید Sysdatabases

AminSobati
جمعه 21 مرداد 1390, 18:20 عصر
سلام دوست عزیزم،
میتونین دیتابیس رو آفلاین-آنلاین کنین:



use master
go

alter database mydb
set offline with rollback immediate
go

alter database mydb
set online
go

restore...

behrooz123
یک شنبه 23 مرداد 1390, 19:50 عصر
میتونید از این روش هم استفاده کنید .
1 - یه رویه توی دیتابیس master ایجاد کنید به صورت زیر


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE restoreDb @fname nvarchar(200)
AS
BEGIN
DECLARE @dbname sysname SET @dbname = 'DB_Name'
DECLARE @spid int
SELECT @spid = min(spid)
from
master.dbo.sysprocesses
where dbid = db_id(@dbname)
WHILE @spid IS NOT NULL
BEGIN EXECUTE ('KILL ' + @spid) SELECT @spid = min(spid)
from master.dbo.sysprocesses
where dbid = db_id(@dbname) AND spid > @spid
END
RESTORE DATABASE [DB_Name] FROM DISK =@fname WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
END
GO

2 - الان میتونی با فراخوانی این رویه و ارسال آدرس فایل ، بانکت رو restore کنی