PDA

View Full Version : نحوه قفل کردن sql server



near_86
یک شنبه 06 خرداد 1386, 17:19 عصر
من می خوام کاری کنم که کسی نتونه وارد دیتا بیس بشه چه کاری می تونم انجام بدم

توی چندتا برنامه دیدم که وقتی می خوایم وارد sql بشیم
بعد از عمل connect هیچ کاری امکان پذیر نیست و دیتا بیس باز نمیشه

من می خوام همین کارو انجام بدم
اما نمی دونم چطور اینکار امکان پذیر....:متفکر:

near_86
دوشنبه 07 خرداد 1386, 10:23 صبح
کسی از بین دوستان نیست که این موردو کار کرده باشه

rezaei manesh
دوشنبه 07 خرداد 1386, 10:49 صبح
روی سروری که دیتابیست توی اونه (مثلا LOCAL)، راست کلیک کن و Edit SQL Server Registration Properties رو انتخاب کن. بعد Use SQL Server Authentication رو انتخاب کن و UserName و Password یکی از Account های SQL اون سرور رو بهش بده (مثلا sa). بعد گزینه Always prompt for login name and password رو تیک بزن. حالا Enterprise Manager رو ببند و دوباره اجراش کن. ببین موقعی که میخوای وارد یه سرور بشی چی میشه؟!!!

اگه اس کیو ال سرورت 2000 هستش و رو سرورت بانک دیگری غیر از بانک خودت نیست می تونی از این روش استفاده کنی

AminSobati
دوشنبه 07 خرداد 1386, 12:36 عصر
راه برای این کار وجود داره، اما اگر توضیح بدین دقیقا هدفتون از این کار چیه، فکر میکنم احتمالا راه حلهای بهتری هم وجود داشته باشه.
به هر حال:


alter database northwind
set offline with rollback immediate

near_86
سه شنبه 08 خرداد 1386, 15:00 عصر
برنامه ای که نوشتم در اختیار 1 شرکت قرار می گیره

من می خوام کاری کنم که برنامه وابسته به خودم باشه

دقیقا مثل برنامه ای که در متنای قبل توضیح دادم

کاربران نتونند دیتابیسو ببینند

نتونن چیزی تو دیتابیس اضافه کنن

کلا از نظر دیتابیس محدود باشن

با این توضیحات میتونین بیشتر کمکم کنین:افسرده:

آقای AminSobati این کدهارو باید توی function بنویسم:متفکر:

ealireza
سه شنبه 08 خرداد 1386, 17:26 عصر
برنامه ای که نوشتم در اختیار 1 شرکت قرار می گیره

من می خوام کاری کنم که برنامه وابسته به خودم باشه

دقیقا مثل برنامه ای که در متنای قبل توضیح دادم

کاربران نتونند دیتابیسو ببینند

نتونن چیزی تو دیتابیس اضافه کنن

کلا از نظر دیتابیس محدود باشن

با این توضیحات میتونین بیشتر کمکم کنین:افسرده:

آقای AminSobati این کدهارو باید توی function بنویسم:متفکر:
چه ربطی داره !!
رمز SA رو یک چیزه عجیب بزار
Win Auth هم غیر فعال کن
موفق باشید

AminSobati
سه شنبه 08 خرداد 1386, 21:13 عصر
با عوض کردن رمز sa موافقم اما Windows Authentication رو نمیشه غیر فعال کرد. در عوض باید لاگین هایی که از این حالت استفاده میکنند حذف بشن.
کدی که برای offline کردن نوشتم به درد شما نمیخوره، چون اصلا نیاز شما چیزه دیگه ای هستش.
در حقیقت شما باید از طریق لاگین ها نحوه ورود کاربرها رو کنترل کنین.

near_86
جمعه 11 خرداد 1386, 16:10 عصر
ممنونم از راهنماییتون

اما کاربران ماهر می تونند با نصب مجدد sql دوباره دیتا بیس attach کنند!!!!!!!!!

درست :متفکر:

من می خوام حتی با این روش هم به دیتابیس دسترسی پیدا نکنن

اگه بخوام برای درایوی که دیتا بیس در اون قرار گرفته رمز بذارم میشه گفت مشکل حل میشه اما

مسئله این که
نسخه های پشتیبان در اختیار اونها هست
پس 1 جورایی اینم روش خوبی نیست

نمی دونم چه کاری باید انجام بدم

AminSobati
جمعه 11 خرداد 1386, 22:44 عصر
مسئله اینجاست که Admin ویندوز رو نمیشه محدود کرد. اون میتونه سرویس رو Stop کنه و فایلهای شما رو برداره. این مساله راه حلی نداره

ب- تات
شنبه 12 خرداد 1386, 07:38 صبح
جناب Sobati ضمن تشکر اون کد Offline رو که نوشتین میشه توضیح بدین کاربردش چی هست؟

SYNDROME
یک شنبه 13 خرداد 1386, 18:38 عصر
با سلام
دوستان راه حلی وجود دارد که من یک Table را قفل کنم به این صورت کن.(فقط یک table)
کسی نتواند اطلاعات آن را ویرایش ، حذف ، اضافه کند؟؟
در صورت امکان حتی نتواند اطلاعات آن را ببیند؟؟

AminSobati
دوشنبه 14 خرداد 1386, 00:59 صبح
اگر منظورتون اینه که این کار برای مدت طولانی بشه، از طریق سطوح دسترسی باید انجامش بدین. اما اگر هدف اینه که کاره همزمانه کاربرها کنترل بشه، بوسیله Transactionها انجام پذیره

SYNDROME
دوشنبه 14 خرداد 1386, 04:52 صبح
با سلام

اگر منظورتون اینه که این کار برای مدت طولانی بشه، از طریق سطوح دسترسی باید انجامش بدین. اما اگر هدف اینه که کاره همزمانه کاربرها کنترل بشه، بوسیله Transactionها انجام پذیره
دقیقاً منظورم برای یک عمره.
چون این جدول بنده دارای اطلاعاتی است که باید به هیچ وجه دست نخورد و تا روزی که برنامه است بتوانم از آن اطلاعات آن استفاده کنم ولی ویرایش ، حذف و اضاقه نشود.
ممنون می شود اگر راهنمایی کنید یا Linkهایی که در سایت است را برای بنده بگذارید(چون نمی دانستم باید دنبال چی باشم پیدا نکردم)

AminSobati
دوشنبه 14 خرداد 1386, 11:09 صبح
شما هم میتونین با محدود کردن کاربرها در انجام دستورات ویرایشی روی جدول مذکور به این هدف برسین، و همچنین راه دیگه ای که به نظرم رسید، استفاده از Filegroup هستش. مثلا یک Filegroup جدید به دیتابیس اضافه کنین، جدول رو Design کنین و روی این Filegroup قرار بدین. حالا این Filegroup رو Readonly کنین. در این حالت نیازی به کنترل سطوح دسترسی کاربران نیست و حتی sa هم نمیتونه ویرایش انجام بده مگر اینکه Filegroup به حالت ReadWrite برگرده.
برای شروع، در Books Online مطالب مربوط به Filegroup رو مطالعه کنین.

AminSobati
دوشنبه 14 خرداد 1386, 11:10 صبح
جناب Sobati ضمن تشکر اون کد Offline رو که نوشتین میشه توضیح بدین کاربردش چی هست؟

دوست عزیزم این دستور باعث میشه دیتابیس به صورت غیر فعال در بیاد و در این حالت کسی نمیتونه به هیچ شکلی از دیتابیس اطلاعات بگیره یا ویرایش کنه.

aidinwashere
دوشنبه 14 خرداد 1386, 14:57 عصر
جناب ثباتی, نمیشه از Trigger استفاده کنن؟
یه تریگر از نوع Instead Of بسازن که نشه به اطلاعاتش دست زد. مشکل اینه که روش میشه SELECT زد.
مشکلات این روش رو اگه بگین ممنونم, اگه نگین هم ممنونم.

AminSobati
دوشنبه 14 خرداد 1386, 15:55 عصر
آیدین جان Trigger هم راه خوبیه. البته با توجه به اینکه هر جدول فقط یک Instead Of برای هر کدوم از عملیات DML میتونه داشته باشه، در صورتی این روش قابل استفاده هستش که از قبل چنین تریگری نداشته باشیم.
البته یک مسئله هست و اون اینکه آیا اصلا قرار نیست این جدول تحت هر شرایطی ویرایش بشه؟ یعنی فرضا حتی توسط مالک دیتابیس؟ اگر قرار بین کاربرها تمایز قائل بشیم، اولین راهی که پیشنهاد کردم (سطوح دسترسی) بهترین حالت هستش. و اگرنه میتونه ترفندهای متنوعی مورد استفاده قرار بگیره