PDA

View Full Version : طول عمر یک spid



Sal_64
یک شنبه 26 آذر 1391, 21:27 عصر
سلام - طول عمر یک spid چقدره؟ ببینید یک برنامه تحت ویندوز (کانکشن) از کلاینت به بانک متصل میشه و یک شماره spid بهش تعلق میگیره ، حالا اگه این برنامه مدت زیادی مثلا چند دقیقه یا حتی چند ساعت با بانک کاری نداشته باشه حالا ممکنه حتی در این زمان کلاینت دیگری هم به بانک کانکت شه - سر spid اول چی میاد؟ پابرجاست ، از بین میره یا به کلاینت دیگه ای تعلق میگیره؟

حمیدرضاصادقیان
دوشنبه 27 آذر 1391, 00:36 صبح
سلام
تازمانی که ارتباط برقراره اون Spid نیز موجوده تنها زمانی از بین خواهد رفت که connection شما قطع بشه.

Sal_64
دوشنبه 27 آذر 1391, 08:22 صبح
سلام
تازمانی که ارتباط برقراره اون Spid نیز موجوده تنها زمانی از بین خواهد رفت که connection شما قطع بشه.

سلام تشکر - دقیقا منظور از connection چیه؟ - یعنی اگر برنامه تنها در زمان لاگین یک مرتبه به بانک متصل شه و اطلاعات چک کنه و در باقی زمان اجراش کاری با بانک نداشته باشه باز هم بعنوان یک connection محسوب میشه؟ تشکر

حمیدرضاصادقیان
دوشنبه 27 آذر 1391, 09:01 صبح
بله. چون ارتباط برقرار هست. منظور این هست که شما به سرور متصل هستید و ارتباط قطع نشده و در این حالت Spid به صورت Sleeping در میاد تا دوباره یک کار جدیدی رو انجام بدید.
منظور از قطع ارتباط استفاده از Disconnect هست یا اینکه Connectرو برابر False کنید که کلا ارتباط شما قطع بشه.

hossein_h62
دوشنبه 27 آذر 1391, 09:22 صبح
پیرو فرمایش جناب صادقیان
هر Connection بسته به عملیاتی که کاربر انجام میده session های متعدد ایجاد میکنه و در نتیجه spid ایجاد میکنه که این spid ها مادامیکه وجود دارن ممکنه وضعیتشون تغییر پیدا کنه. تا زمانی هم که از بین نرفتن هیچ تداخلی با یکدیگر ندارن.
همونطور که جناب صادقیان گفتن با قطع اتصال کلاینت و یا Kill از بین خواهند رفت.

Sal_64
دوشنبه 27 آذر 1391, 09:26 صبح
سلام - در برنامه های ویژوال برای هر ارتباط با بانک کانکشن ایجاد شده در برنامه با کدهای سمت کلاینت open میشه ، کار انجام میده و بلافاصله close میشه - آیا این close کردن کانکشن در سمت کلاینت بوسیله کدهای ویژوال استدیو به منزله همان kill کردن کانکشن در sql ؟؟ تشکر

حمیدرضاصادقیان
دوشنبه 27 آذر 1391, 10:36 صبح
بله دقیقا .

Sal_64
دوشنبه 27 آذر 1391, 10:47 صبح
بله دقیقا .

تشکر- با این اوصاف اولین کانکشن (کانکشن لاگین) نباید تا زمان خروج از برنامه ببندم ؟ درسته ؟ آیا در این مدت کانکشن هایی که برای اینزت و آپدیت و ... باز میشه و بسته میشه spid هایی جدید خواهد گرفت؟ اگر اینطوره پس چطوری میتونم از اولین spid برای شناسایی کاربر در تریگرها (مثلا حذف) استفاده کنم؟ بازم تشکر

hossein_h62
دوشنبه 27 آذر 1391, 11:02 صبح
spid ارتباطی با کاربر نداره. با قطع یک session شماره spid اون از بین میره و مجددا به session دیگه با LoginName متفاوت میتونه اختصاص پیدا کنه. پس راه منطقی برای شناسایی یوزرها نیست!
میتونید در تریگر از تابع suser_sname استفاده کنید و یا راههای دیگه...