نقل قول: مشکل با restore کردن
احتما دارد که شما قبل از restoreکردن connection را در جایی باز کرده باشید وآن را close نکرده باشید؟ به نظر می آیید که شما باید حتما همه connection ها را باید ببندید
نقل قول: مشکل با restore کردن
در sql به خصوص در سیستم های شبکه ای اگر اتصالی برقرار باشد این اجازه را به شما نمیدهد .برای این کار شما میتوانید با sp_who لیست افراد متصل به sql خود را ببینید و اگر خواستید به force connection کنید .
نقل قول: مشکل با restore کردن
دوست عزیز تمام connection را close کردم باز هم همون error را می ده
دوست عزیز این برنامه من تحت شبکه نیست فقط روی یک pc می خواهد کار کند
نقل قول: مشکل با restore کردن
دوست عزیز به برنامه ای که در این پست گذاشته ام مراجعه کن
https://barnamenevis.org/showthread.php?t=153480
نقل قول: مشکل با restore کردن
دوست عزیز این برنامه قبلا دیدم برنامه قشنگی ولی فکر کنم مثل این برنامه در CodeProject یا msdn دیده بودم ولی من می خواهم همون مشکل خودم حل بشه
با تشکر
نقل قول: مشکل با restore کردن
عزیزم همونطور که گفتم sp_who رو اجرا کن ، از لیست به دست اومده با دستور kill تک تک spid را ببند .
در ضمن کسی اینجا موظف به پاسخ دادن نیست .
نقل قول: مشکل با restore کردن
دوست عزیز میشه یه کم بیشتر توضیح بدی یا کدی در این مورد بذاری
نقل قول: مشکل با restore کردن
نقل قول:
دوست عزیز این برنامه قبلا دیدم برنامه قشنگی ولی فکر کنم مثل این برنامه در CodeProject یا msdn دیده بودم
من خودم قبل از اینکه این برنامه رو بنویسم کلی اینترنت رو گشتم ولی تمام برنامه هایی که پیدا کردم اشکالاتی داشتند بنابراین مجبور شدم خودم یه چیز کامل بنویسم.
90% برنامه های اینترنتی هنگام Restore اگه مسیر جدید با مسیر قبلی پایگاه داده متفاوت بود با مشکل مواجه می شدند همچنین اگر از قبل پایگاه داده موجود نبود عمل رستور با شکست همراه می شد. برنامه ای که من نوشتم می تونه یک پایگاه داده خالی رو در مسیر دلخواه ایجاد کنه و بعد عمل رستور را انجام بده و علاوه براین می تونه فایل های سرایند فایل بکاپ رو بخونه و اون رو در مسیر دلخواه رستور کنه.
ممکنه یکی از این موارد مشکل برنامه شما باشه.
نقل قول:
ولی من می خواهم همون مشکل خودم حل بشه
تا وقتی تکنولوژی جدید و با قدرتی مثل smo هست چرا اصرار به کدنویسی اونم از این نوع.
هرچند کد نویسی خوبه ولی بهتره از کلاس های کپسوله شده استفاده بشه به شرطی که سر از کار کلاس درآریم.
نقل قول: مشکل با restore کردن
من با smo هم تست کردم همین مشکل اونجا هم هست .اصلا خود sql هم همین کارو فکر میکنم چون همه رو بیرون میکنه .دست خط جفتشم برا خودمه کپی جایی نیست !
نمونه کد با C#
DataTable dt = new DataTable();
using (SqlConnection connection = new SqlConnection("User ID=sa;pwd=11;Initial Catalog=tempdb;Data Source=tfidb2"))
{
using (SqlCommand command = new SqlCommand("SP_Who", connection))
{
connection.Open();
dt.Load(command.ExecuteReader());
string stCommand = "KILL {0}";
foreach (DataRow dr in dt.Rows)
{
command.CommandText = string.Format(stCommand, (Int16)dr["spid"]);
try
{
command.ExecuteNonQuery();
}
catch (SqlException) { }
}
}
}
//Write Restore Commmand
سمت sql
--Members
DECLARE @iCounter int,@iLen int,@spId int
DECLARE @stCommand varchar(50)
DECLARE @sp_who Table(
spid smallint,
ecid smallint,
status nchar(30),
loginame nchar(128),
hostname nchar(128),
blk char(5),
dbname nchar(128),
cmd nchar(16),
request_id smallint,
Id int identity(1,1))
--Initialzing
INSERT INTO @sp_who EXEC sp_who
SET @iCounter=1;
SELECT @iLen=COUNT(Id) FROM @sp_who
--Body
WHILE (@iCounter<=@iLen)
BEGIN
BEGIN TRY
SET @spId=(SELECT spid FROM @sp_who WHERE ID=@iCounter)
SET @stCommand='KILL QUERY NOTIFICATION SUBSCRIPTION ' + CAST(@spId as varchar(5))
EXECUTE @stCommand
END TRY
BEGIN CATCH
END CATCH
SET @iCounter=@iCounter+1
END
نقل قول: مشکل با restore کردن
فکر کنم تو روشی که شما نوشتی نام فایل باید همنام پایگاه داده قبلی باشد یا شاید هم در مسیرهای خاص مانند desktop عمل Restore را انجام میدی که منجر به خطا میشه.
آیا اون برنامه ای که من با smo نوشته بودم رو تست کردی؟
اگه ارور میده ارورش چیه؟
نقل قول: مشکل با restore کردن
فرق میکنه چه خطایی میده ! معمولا خطا به دلیل database در حال استفاده میباشد هست .