PDA

View Full Version : سوال: قطع ارتباط ها با بانک اطلاعاتی



rkhabbazi
سه شنبه 21 دی 1389, 12:44 عصر
سلام دوستان عزیز:قلب:
در سی شارپ متد ClearAllPools یک کانکشن، باعث می شود که تمام خطوط ارتباطی با بانک اطلاعاتی قطع شود. آیا همچین متدی هم در دلفی برای قطع ارتباط همه کانکشن ها با بانک اطلاعاتی، وجود دارد؟:متفکر:
ممنون از دوستانی که جواب این سوال را بدهند.:خجالت::قلب:
خدانگهدار

pezhvakco
چهارشنبه 22 دی 1389, 09:12 صبح
سلام :
اگر ADOConnection رو بکار گرفته باشی، میتونی همین رو قطع (False) کنی .

ehsan.moolaei
دوشنبه 22 فروردین 1390, 10:48 صبح
سلام دوستان منم همین مشکل رو دارم توی دلفی این دستور رو مینویسم ولی ارتباط رو قطع نمیکنه لطفاًکمک کنید
adoconnection1.connection:=false

pezhvakco
دوشنبه 22 فروردین 1390, 11:35 صبح
سلام دوستان منم همین مشکل رو دارم توی دلفی این دستور رو مینویسم ولی ارتباط رو قطع نمیکنه لطفاًکمک کنید
adoconnection1.connection:=false
چی کاری می خوایین انجام بدین که این پیام میاد ؟

ehsan.moolaei
چهارشنبه 24 فروردین 1390, 07:37 صبح
میخوام وقتی که دیتا بیسم رو restore میکنم ارتباطم با دیتا بیسم قطع شه و با دیتا بیس master برقرار شه و پردازم رو توی این دیتا بیس فراخوانی کنم.یه کار دیگم که میخوام برنامم انجام بده اینه که وقتی محیط برنامم بیسه میشه به وسیله پایگاه master پایگاه خودم detach بشه و پردازم فراخوانی بشه که اینم مستلزم قطع ارتباط با دیتا بیس خودمه.
کمک کنین لطفاً
مرسی

ehsan.moolaei
چهارشنبه 24 فروردین 1390, 07:38 صبح
میخوام وقتی که دیتا بیسم رو restore میکنم ارتباطم با دیتا بیسم قطع شه و با دیتا بیس master برقرار شه و پردازم رو توی این دیتا بیس فراخوانی کنم.یه کار دیگم که میخوام برنامم انجام بده اینه که وقتی محیط برنامم بیسه میشه به وسیله پایگاه master پایگاه خودم detach بشه و پردازم فراخوانی بشه که اینم مستلزم قطع ارتباط با دیتا بیس خودمه.
کمک کنین لطفاً
مرسی

pezhvakco
چهارشنبه 24 فروردین 1390, 09:51 صبح
میخوام وقتی که دیتا بیسم رو restore میکنم ارتباطم با دیتا بیسم قطع شه و با دیتا بیس master برقرار شه و پردازم رو توی این دیتا بیس فراخوانی کنم.
اگه شما یه زحمتی می کشیدین جستجو در مورد گرفتن و بازگرداندن پشتیبان می داشتین راحت تر به خواسته می رسیدین :
1) اجراي اين کد => ADOCommand.CommandText:='Use Master';

2) سپس اجراي اين کد => ADOCommand.CommandText:='RESTORE DATABASE DataBase_Name FROM DISK = ' + QuotedStr(Addr) + ' ';

نیازی به غیر فعال کردن ارتباط نیست .


یه کار دیگم که میخوام برنامم انجام بده اینه که وقتی محیط برنامم بیسه میشه به وسیله پایگاه master پایگاه خودم detach بشه و پردازم فراخوانی بشه که اینم مستلزم قطع ارتباط با دیتا بیس خودمه.
چرا می خوایین این کار رو انجام بدین .
کد های detachرو با جستجو می تونین پیدا کنین :
http://barnamenevis.org/showthread.php?209938-%D9%85%D8%B4%DA%A9%D9%84-detach-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87

ehsan.moolaei
چهارشنبه 24 فروردین 1390, 12:45 عصر
ممنون از اینکه جواب دادین
ولی وقتی من هنوز ارتباطم با پایگاهم برقراره و مثلاً از بانکم توی دلفی پشتیبان میگیرم و بعد همون لحظه بخوام restore کنم sql server هیچوقت این اجازه رو نمیده که بانکم restore بشه چون با بانکم ارتباط دارم و اول باید ارتباطم قطع شه و بعد این دستوراتی که شما نوشتین رو اجرا کنم.مشکل من قطع ارتباط با بانکمه
در مورد کدهای detach هم من مشکلی با کدهاش ندارم فقط نحوه قطع ارتباط با بانکم رو نیاز دارم
این رو هم اضافه کنم که من توی برنامم فقط از یک adoconnection دارم استفاده میکنم و همه فرمهام رو به اون ربط دادم

pezhvakco
چهارشنبه 24 فروردین 1390, 12:56 عصر
ولی وقتی من هنوز ارتباطم با پایگاهم برقراره و مثلاً از بانکم توی دلفی پشتیبان میگیرم و بعد همون لحظه بخوام restore کنم sql server هیچوقت این اجازه رو نمیده که بانکم restore بشه چون با بانکم ارتباط دارم و اول باید ارتباطم قطع شه و بعد این دستوراتی که شما نوشتین رو اجرا کنم.مشکل من قطع ارتباط با بانکمهتو دلفی پشتیبان می گیرین یعنی کجا ؟
اگه منظور شما در برنامه ای است که نوشتین، شما در هنگام بازگرداندن (restore) پشتیبان نباید هیچ برنامه دیگری مانند Enterprise یا ... اجرا باشه و یا این ابزار adoconnection در خود برنامه دلفی (محل کد نویسی) در ارتباط با پایگاه داده باشه ( Connected = False) .

ehsan.moolaei
چهارشنبه 24 فروردین 1390, 13:14 عصر
بله توی برنامم مثل تمام برنامه های دیگه منم توی برنامم 2 تا فرم گذاشتم یکی واسه backup و یکی دیگه واسه restore با بکاپم هیچ مشکلی ندارم ولی واسه restore باید ارتباط قطع بشه.هیچ برنامه ای هم مثل enterprise یا managment studio باز نیست.در مورد connected:=false هم که قبلاً گفته بودم که با این دستور هم ارتباط با بانکم قطع نمیشه

vcldeveloper
چهارشنبه 24 فروردین 1390, 13:25 عصر
ولی وقتی من هنوز ارتباطم با پایگاهم برقراره و مثلاً از بانکم توی دلفی پشتیبان میگیرم و بعد همون لحظه بخوام restore کنم sql server هیچوقت این اجازه رو نمیده که بانکم restore بشه چون با بانکم ارتباط دارم و اول باید ارتباطم قطع شه و بعد این دستوراتی که شما نوشتین رو اجرا کنم.مشکل من قطع ارتباط با بانکمه
اول AdoConnection.Connected رو False می کنید؛ سپس مقدار ConnectionString رو تغییر میدید که به جای Database خودتون، به Master وصل بشه، دوباره AdoConnection.Connected رو True می کنید، و کد مربوط به Detach رو اجرا می کنید.

ehsan.moolaei
یک شنبه 28 فروردین 1390, 08:25 صبح
جناب کشاورز عزیز این راهم جوابگو نیست باز هم in use میده
من با دستور adoconnection.free مشکل رو حل کردم و بانک restore میشه ولی adoconnection از بین میره و نمیدونم چطور adoconnection رو برگردونم

aabedi25
سه شنبه 10 خرداد 1390, 12:16 عصر
من اين مشكل رو وقتي از دلفي 7 به دلفي 2010 مهاجرت كردم داشتم كه با اين روش حل كردم . اين كد تمام processes ها را kill مي كند.
قبل از كد Restore يا Detach اين كد را قرار دهيد.

DECLARE @DatabaseName VARCHAR(50)
DECLARE @hostname VARCHAR(100)
DECLARE @program_name VARCHAR(100)
SET @DatabaseName = 'BankName+'
SET @hostname = 'ServerName'
SET @program_name = 'Product_Name'
DECLARE @SIDList TABLE (ID INT IDENTITY(1,1),SID INT)
INSERT INTO @SIDList
SELECT spid FROM master.dbo.sysprocesses WHERE dbid = db_id(@DatabaseName)
and hostname=@hostname and program_name=@program_name

DECLARE @CurrentRecord INT, @TotalRecord INT
SELECT @TotalRecord = COUNT(*) FROM @SIDList
SET @CurrentRecord = 0
DECLARE @SIDVar INT
WHILE(@CurrentRecord < @TotalRecord)
BEGIN
SET @CurrentRecord = @CurrentRecord + 1
SELECT @SIDVar = SID FROM @SIDList WHERE ID = @CurrentRecord
DECLARE @SQlVar varchar(1000)
SET @SQlVar='KILL ' + cast( @SIDVar AS VARCHAR(10) )
EXECUTE (@SQlVar )
END

ehsan.moolaei
یک شنبه 05 تیر 1390, 01:02 صبح
باتشکر از شما
دوست عزیز در مورد برنامه ای که گذاشتی یه مقدار راهنمایی میکنی؟
مثلاً به جای hostname یا Product name چی باید نوشت؟

aabedi25
سه شنبه 07 تیر 1390, 13:13 عصر
@hostname =نام كامپيوتري كه برنامه شما از آن به بانك وصل شده
@program_name= نام برنامه شما كه به آن بانك وصل شده در دلفي در منوي
Project > Options... > Resource Compiler > Version Info > ProductName
مقدار آن توسط شما كه نام برنامه شما مي باشد تنظيم و قابل استفاده است