PDA

View Full Version : دستور برای سرویس دهی بانک فقط به یک کاربر



choobin84
جمعه 10 فروردین 1386, 20:20 عصر
آیا دستوری در اس کیو ال هست که در یک بازه زمانی فقط به کاربر سرویس بدهد و دستورات او را اجرا کند و پس از پایان یافتن دستورات به کاربر بعدی که درخواست ارتباط با بانک را دارد، اجاز دسترسی بدهد؟
ممنون

AminSobati
شنبه 11 فروردین 1386, 00:42 صبح
یک دیتابیس رو میشه Single User کرد ولی نمیدونم چقدر به نیاز شما پاسخ میده (دستور ALTER DATABASE رو ببینید). اما اگر انعطاف پذیریه بیشتر مورد نیاز باشه، با کمی کد نویسی میشه این کار رو به نحو احسن انجام داد (از روی خروجی EXEC SP_WHO). اما مطمئن هستید که کار باید کاملا سریال انجام بشه؟! شاید فقط روی بعضی جداول این کار ضروری باشه

choobin84
شنبه 11 فروردین 1386, 06:55 صبح
یک دیتابیس رو میشه Single User کرد ولی نمیدونم چقدر به نیاز شما پاسخ میده (دستور ALTER DATABASE رو ببینید). اما اگر انعطاف پذیریه بیشتر مورد نیاز باشه، با کمی کد نویسی میشه این کار رو به نحو احسن انجام داد (از روی خروجی EXEC SP_WHO)
به اینکه بانک کاملا در یک لحظه به یک کاربر اختصاص داده بشه احتیاجی نیست.
فقط برای انجام عملیات درج آن هم فقط برای جدولی که مثلا کاربر 1 در حال کار با آن است به این کار نیازه.
برای مثال اگر کاربر 2 با جدول 2 کار می کند و کاربر 1 با جدول 1 ، نیازی نیست که جدول 2 ، برای کاربر 1 قفل بشه.
کد نویسی کافیه.
در ضمن این EXEC SP_WHO رو از کجا پیدا کنم.

AminSobati
دوشنبه 13 فروردین 1386, 23:55 عصر
EXEC SP_WHO رو در Query Analyzer فقط اجرا کنین!
اگر چه نمیدونم آیا واقعا قصد شما برای تک کاربره کردن جداول درست هست یا خیر، ولی با فرض بر اینکه درسته، شما باید از Transactionها و Lock Hint کمک بگیرید (موقع Select یا ویرایش). مثلا این دستور باعث میشه جدول در طول مدتی که Transaction باز هسش، قفل بشه و کاربرهای دیگه نتونن باهاش کار کنند:


use northwind
go

begin tran
insert customers with (tablock) (customerid,companyname) values( 'a','b' )

عبارت بعد از with یعنی Table Lock، باعث میشه جدول Lock بشه.
در Books Online به Locking رجوع کنین