الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

How To Delete Block Process In Sql Server 2005

بدأه ya_as في 16 نوفمبر 2009 · 13 رد · 1,036 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

هل يوجد يوجد يقوم بالبحث عن العمليات التي عليها block في قاعدة البيانات

هذه العمليات قد تكون select or inert or update

فهل يوجد كود يقوم بالبحث عن هذه العمليات ويقوم بحذفها

ارجوا الافادة

#2

و عليكم السلام و رحمة الله تعالى و بركاته...

المرجو إعادة صياغة السؤال...

#3

اشكرك اخ محمد رضى

السؤال

احيانا تعميل مثلا insert or update على قاعدة البيانات من البرنامج

فاحيانا هذه العملية تظل قيد التنفيذ يعني لو دخلت من sqlserver>management>activity monitor

في من ظمن الحقول الموجودة في  activity monitor

blocking بعض العمليات توضع عليها 1 وتكون معلقه في السرفر ضروري تعمل لها kill process

فهل يوجد كود يقوم بهذه العملية

شاكرين

#4

قم أولا بزيادة مرجع نحو المكتبة SMO و ConnectionInfo لمشروعك. بعدها قم بزيادة السطرين التاليين لاستيراد فضاء أسماء المكتبتين :

Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo

و هذا كود بسيط يمكنك من قتل أي بروسيس و ذلك بتحديد مرجعه على المتغير ProcsID :

		' إنشاء كائن الإتصال بالخادم و ليس بقاعدة بيانات
		Dim sqlConnection As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Connect Timeout=30")
		Dim srvrConnection As New ServerConnection(sqlConnection)
		' ربط الإتصال بالخادم
		Dim srvr As New Server(srvrConnection)
		' قتل البروسيس
		Dim ProcsID As Integer = 52 ' حدد هنا رقم البروسيس لقتله
		srvr.KillProcess(ProcsID)
#5

اخي محمد هذا معناه انه ضروري اولا اعرف رقم البروسيس المراد حذفها

يعني هل يوجد كود معين يقوم بجلب العمليات الي عليها blocking

وشكرا

#6

استعمل الدالة Server.EnumProcesses() للحصول على جدول به لائحة بروسيسز و معلومات كل واحد منها. ويمكنك التعرف على البلوكت منها و قتلها...

أنظر هنا :

Server.EnumProcesses Method

#7

اشكرك اخي محمد على الرد

ومعليش لو ثقلت عليك

الدالة Server.EnumProcesses

على ما اظن انها تجلب بيانات غير الي موجودة في ACTIVITY MONITOR

لانه الدالة.EnumProcesses تجيب مثلا الحقول التالية : URN , NAME, SPID,LOGIN الخ

اما الي اريده انا في ACTIVITY MONITOR يحتوي الحقول التالية PROCESS ID ,SYSTEM PROCESS ,BLOKING,BLOCKED BY

فهل انا غلطان في الاستخدام اما انها تجلب بيانات غير الي ACTIVITY MONITOR

مرفق صوره توضح معلومات البروسيس الي انا عايزها

وشكرا

killprocess.rar

تم تعديل هذه المشاركة بواسطة ya_as في 17 نوفمبر 2009 في 09:30

#8

الدالة EnumProcesses تعطي المعلومات الموجودة على الصورة المرفقة. أظن أنها كافية لمعرفة البروسيس الجامد و قراءة مرجعه و قتله. المعلومات المهمة هي Name, Status, Database, Blocking و IsSystem.

post-207152-1258452689_thumb.jpg

#9

اخ محمد

هل هذه المعلومات الموجودة بالشاشة بتاعتك هي نفس المعلمومات الي في ACTIVITY MONITOR

الموجودة في SQLSERVER 2005

من حيث رقم البروسيس وبياناتها

#10

نعم بالطبع و أضن أنها كافية لمعرفة البروسيس الجامد و قتله

#11

اهلا استاذ محمد

معليش ادوشتك معاي

الان انا جربت الطريقة الي جبتها لجلب البروسيس

بس لاحظت اختلافات بين ACTIVITY MONITOR وبين البيانات الي جايبها بالكود من حيث

1) أرقام البروسيس مختلف

2) عدد البروسيس الي في ACTIVITY MONITOR اكثر اي ان الكود لا يعرض كل البروسيس

3) قمت بملاحظة بعض العمليات في ACTIVITY MONITOR وهي BLOCKED لكنها لا تظهر الشاشة بتاعتي

اشكرك على كل المعلومات

#12
اقتباس
1) أرقام البروسيس مختلف

هل تم تثبيت أكثر من Instance لخادم SQL Server على الجهاز؟

في هذه الحالة يجب أن تحدد اسم Instance التي تريد التعامل معها في جملة الربط.

اقتباس
3) قمت بملاحظة بعض العمليات في ACTIVITY MONITOR وهي BLOCKED لكنها لا تظهر الشاشة بتاعتي

العمود Status, ألا يظهر حالة البروسس الجامد؟

بالنسبة لعدد البروسس فـ Activity Monitore برنامج متقدم و يمكنك تحديد فلتر لإضهار المعلومات التي تريد و لا أظن أن أحدا منا مستعد لبدل الوقت و الجهد لتطوير برنامج مماثل ;)

#13

لا يوجد عندي غير Instance واحدة فقط

لكن الارقام تظل مختلفة فمثلا في ACTIVITY MONITOR دائما نرى الارقام من 51 - 52 ........

بينما في الشاشة تبدأ من 1 -2 .......

وكذلك كما قلت العمود Status, ألا يظهر حالة البروسس الجامد؟

اذا كان هذا البروسيس هو الي عامل المشكلة يعني انه الكود الي مسويه ما ينفع

اشكرك على سعة صدرك

#14

اهلا محمد

اولا اشكرك على كل المعلومات الي جبتها

ثانيا

احب اقول لك انه توجد طريقه تعرض البروسيس نفس الي موجوده في ACTIVITY MONITYOR

وهو جدول موجود في MASTER DB اسمه SYSPROCESSES

مواضيع مشابهة