هل من طريقة لفصل أحد المستخدمين من قاعدة البيانات عن طريق إجراء أو أوامر باستخدام ال SQL Query
وشاكر سلفا..
هل من طريقة لفصل أحد المستخدمين من قاعدة البيانات عن طريق إجراء أو أوامر باستخدام ال SQL Query
وشاكر سلفا..
موقوف من المشاركة لقلة الأدب
============================
sp_dropuser
مثال:
EXEC sp_dropuser 'wael'
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
لقد ظننت انك تريد حذف المستخدم, اسف لم انتبه
يمكنك استخدام التعليمة Kill حيث تأخذ الشكل التالي:
KILL {spid | UOW} [WITH STATUSONLY]حيث يمكنك الحصول على spid من تنفيذ الاجرائية المخزنة sp_who, حيث انّ spid هو رقم جلسة لمستخدم متصل على المخدم
يعني في النهاية سوف يكون شكل التعليمة مثلاً
kill 52
ملاحظة: لا يمكنك تنفيذ تعليمة Kill على الاتصال الذي قمت بعمل Login من خلاله.
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
لكن يبقى السؤال كيف يمكن اطفاء يوسر بعينه أو كيف احضر ال SPID الخاص باليوسر ali مثلا لاجل عمل kill PSID
:)
موقوف من المشاركة لقلة الأدب
============================
لقد قمت باعطائك الفكرة على امل ان تقوم بتكميل ما تريد لوحدك. ولكن على ما يبدوا لا احد يريد ان يتعب نفسه, الكل يريد الشيئ جاهز
هذه اجرائية مخزنة قمت بعملها لكي تقوم بفصل مستخدم معين و ذلك باعطاء اسم قاعدة البيانات و Login name
--by wael dalloul at 8-3-2007,10:15 Create procedure KillUser(@dbname varchar(100),@loginame varchar(100)) as --create table to get the information from sp_who stored procedure. Create table #sp_who (SPID int , ecid int , status varchar(30),loginame varchar(100), hostname varchar(100),blk int , dbname varchar(100) , cmd varchar (100)) --Get the recordes from stored procedure sp_who into temp table #sp_who insert into #sp_who exec sp_who declare @SPID int --get the SPID for the loginname and dbname select @SPID = SPID from #sp_who where dbname = @dbname and loginame = @loginame declare @SQL nvarchar(100) set @SQL = 'kill ' + convert(nvarchar,@SPID) --execute the stored procedure exec sp_executesql @sql --drop the temp table after finnish drop table #sp_who return 0
لتنفيذ الاجرائية السابقة نكتب مثلاً:
exec KillUser 'DBName','sa'
ملاحظة: اكمل في نفس الموضوع و لا تقوم بوضع مشاركة جديدة عندما تجد ان احدهم تأخر بالرد عليك.
تم تعديل هذه المشاركة بواسطة Wael Dalloul في 8 مارس 2007 في 11:50
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
مشكووووووووووووووووووووووووووووور
بارك الله فيك
والله يا اخي لاني مش خبير بال StoredProcedure لكن انا دائما أجمع الافكار واتعب بها فعلا :)
لكن هنا بسبب قلة الخبرة والحاجة الماسة
جزاك الله كل خير لقد أوفيت بالمطلوب وجاري التجريب ...(F)
موقوف من المشاركة لقلة الأدب
============================
اخي وائل شكرا لشيفرتك فهي تعمل بشكل رائع
ولقد قمت بتطويرها بحيث صنعت Stored Procedure تقوم بإغلاق كل المستخدمين من نفس الاسم حيث ان الاجراء المشروح من قبلكم اخي الحبيب لا يغلق الا اخر SPID فلو فرضنا ان 10 اشخاص داخلين على الداتا بيس بنفس ال Login فلن يغلق الا الاخير منهم ،، وأود أن أقول أنني طورت في شيفرتك وأستفدت منها كثيرا وخرجت بهذا العمل المتواضع والذي أتمنى أن يفيد الجميع.
--لاغلاق كل المتصلين بالداتا بيس دفعة واحدة --by wael dalloul at 8-3-2007,10:15 create procedure KillUser(@dbname varchar(100),@loginame varchar(100)) as --create table to get the information from sp_who stored procedure. Create table #sp_who (SPID int , ecid int , status varchar(30),loginame varchar(100), hostname varchar(100),blk int , dbname varchar(100) , cmd varchar (100),request_id varchar(100)) --Get the recordes from stored procedure sp_who into temp table #sp_who insert into #sp_who exec sp_who declare @SQL nvarchar(100) ------- DECLARE @PID nvarchar(11)-- SPID 1,2,3 DECLARE c1 CURSOR FOR SELECT SPID FROM #sp_who where dbname = @dbname and loginame = @loginame OPEN c1 FETCH NEXT FROM c1 INTO @PID ------ WHILE @@FETCH_STATUS = 0 BEGIN PRINT @PID + ' killed... ok' set @SQL = 'kill ' + convert(nvarchar,@PID) --execute the stored procedure exec sp_executesql @sql FETCH NEXT FROM c1 INTO @PID END CLOSE c1 DEALLOCATE c1 drop table #sp_who
موقوف من المشاركة لقلة الأدب
============================
جميل جدا اخي jooorj, لم انتبه انّ Login name,db name لا تشكل Unique
الحمد لله انني استطعت ان اساعدك, و شكرا لك لانك وضعت الكود الذي قمت بعمله
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
في سؤال كيفية منع متصل من الاتصال لمدة ربع ساعة مثلا حتى ينتهي الصيانة مثلا
موقوف من المشاركة لقلة الأدب
============================
اعمل Pause لل service ولن يستطيع احد الدخول و عندما تنتهي من عملية الصيانة اعمل continue.
ملاحظة: اطرح اي موضوع مختلف في مشاركة منفصلة
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
اها اخي وائل انا شاكر لاهتمامك
وبارك الله فيك
موقوف من المشاركة لقلة الأدب
============================
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…