مي خوام تمام ارتباطهاي بيش از 2 ساعت با سرور رو كه به ديتا بيس مشخصي وصل شدن رو kill كنم
در حقيقت kill كردن يه select به چه شكله؟
از cursor به چه صورت بايد استفاده كنم؟
مي خوام تمام ارتباطهاي بيش از 2 ساعت با سرور رو كه به ديتا بيس مشخصي وصل شدن رو kill كنم
در حقيقت kill كردن يه select به چه شكله؟
از cursor به چه صورت بايد استفاده كنم؟
آخرین ویرایش به وسیله salimim : پنج شنبه 07 آذر 1387 در 16:35 عصر
به اين شكل 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
آخرین ویرایش به وسیله salimim : پنج شنبه 07 آذر 1387 در 17:11 عصر
سلام دوست عزیزم،
در کدوم نسخه کار میکنید؟
سلا م استاد
همچنان از نسخه 2000
البته عدم آپديت به دليل نرم افزارمونه!
مشکلی نیست مهرداد جان،
در همون جدول master..sysprocesses از فیلد login_time مگه نمیتونین استفاده کنین؟
ممنون استاد
ولي مشكل من در مورد kill كردن يك سري connection هست كه SPID شونو ميدونم(يعني ميتونم با يه select استخراج كنم)
در حقيقت login به يه software برام مهمه كه توي table مربوط به خود آن نرم افزار ذكر مي شه.
در نهايت استاد اگه ممكنه براي اينكار (kill كردن يكسري connection با spid يي كه از يه select استخراج مي شه) يه نمونه برام بذاريد.
بازم ممنونم
من چیزی مشابه کد خودتون در نظرم هست که پست کردین. این کد اشکالش چیه؟ پیغام خطا دریافت میکنید؟
فكر مي كنم مشكل سر KILL هستش!
نبايد يه رشته داشته باشم بعدش execute كنم؟
يه چيزي مثل اين:
exec 'kill '+cast(@p,varchar(20))
مثلا اگه متغيرمون p@ باشه......
* هيچ پيغام خطايي نمي ده اما كانكشن ها هم kill نمي شن
:(