View Full Version : سوال: kill كردن كانكشن
  
salimim
پنج شنبه 07 آذر 1387, 16:41 عصر
مي خوام تمام ارتباطهاي بيش از 2 ساعت با سرور رو كه به ديتا بيس مشخصي وصل شدن رو kill كنم
در حقيقت kill كردن يه select به چه شكله؟
از cursor به چه صورت بايد استفاده كنم؟
salimim
پنج شنبه 07 آذر 1387, 17:51 عصر
به اين شكل kill نمي شه!
DECLARE killp CURSOR FOR 
    SELECT     MASTER.DBO.sysprocesses.spid
                 FROM         MASTER.DBO.sysprocesses INNER JOIN
                              Auto.GNR.Sessions ON MASTER.DBO.sysprocesses.spid = Auto.GNR.Sessions.Spid
                 WHERE     (Auto.GNR.Sessions.OutDate IS NULL) AND (GETDATE() - Auto.GNR.Sessions.InDate > 0.3) 
                 ORDER BY Auto.GNR.Sessions.InDate DESC
for update      
OPEN KILLP
    declare @spida int
    FETCH NEXT FROM KILLP INTO @SPIDA
        WHILE @@FETCH_STATUS=0
            BEGIN
                KILL @SPIDA
                UPDATE Auto.GNR.Sessions
                SET OUTDATE=GETDATE()
                WHERE (Auto.GNR.Sessions.OutDate IS NULL) AND (GETDATE() - Auto.GNR.Sessions.InDate > 0.3)
                FETCH NEXT FROM KILLP INTO @SPIDA
            END
CLOSE KILLP
DEALLOCATE KILLP
AminSobati
جمعه 08 آذر 1387, 02:14 صبح
سلام دوست عزیزم،
در کدوم نسخه کار میکنید؟
salimim
شنبه 09 آذر 1387, 14:18 عصر
سلا م استاد
همچنان از نسخه 2000 :ناراحت: 
البته عدم آپديت به دليل نرم افزارمونه!
AminSobati
شنبه 09 آذر 1387, 18:55 عصر
مشکلی نیست مهرداد جان،
در همون جدول master..sysprocesses از فیلد login_time مگه نمیتونین استفاده کنین؟
salimim
یک شنبه 10 آذر 1387, 08:15 صبح
ممنون استاد 
ولي مشكل من در مورد kill كردن يك سري connection  هست كه SPID شونو ميدونم(يعني ميتونم با يه select استخراج كنم)
در حقيقت login به يه software برام مهمه كه توي table  مربوط به خود آن نرم افزار ذكر مي شه.
در نهايت استاد اگه ممكنه براي اينكار (kill كردن يكسري connection  با spid يي كه از يه select استخراج مي شه) يه نمونه برام بذاريد.
بازم ممنونم
AminSobati
یک شنبه 10 آذر 1387, 14:18 عصر
من چیزی مشابه کد خودتون در نظرم هست که پست کردین. این کد اشکالش چیه؟ پیغام خطا دریافت میکنید؟
salimim
یک شنبه 10 آذر 1387, 14:43 عصر
فكر مي كنم مشكل سر KILL هستش!
نبايد يه رشته داشته باشم بعدش execute كنم؟
يه چيزي مثل اين:
exec 'kill '+cast(@p,varchar(20))
مثلا اگه متغيرمون p@ باشه......
* هيچ پيغام خطايي نمي ده اما كانكشن ها هم kill نمي شن
:(
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.