PDA

View Full Version : Read Only کردن یک Table در SQL Server 2000



nasr
پنج شنبه 27 تیر 1387, 08:26 صبح
سلام
من یک Table دارم که می خوام از طریق Enterprice Manager قابل تغییر نباشه.
و فقط بتونم از طریق برنامه رابط مثل دلفی یا C# یا هر چیز دیگه تغییرات را اعمال کنم

ممنونم

s.mostafa.rahmani
پنج شنبه 27 تیر 1387, 09:47 صبح
بايد براي userهاي SQL رمز عبور تعيين كنيد...

nasr
پنج شنبه 27 تیر 1387, 09:59 صبح
بايد براي userهاي SQL رمز عبور تعيين كنيد...
نه من نمیخوام با پسورد وارد شوند
فقط می خوام یک جدول خاص Read Only fشه

اینجا (http://www.sqlservercentral.com/articles/Advanced+Querying/readonlytables/2517/)مطلبی خوندم ولی هر کاری می کنم عملی نمیشه .

nasr
پنج شنبه 27 تیر 1387, 10:15 صبح
حالا اگه بشه به یه روشی Hide هم بشه بد نیست

AminSobati
پنج شنبه 27 تیر 1387, 10:55 صبح
روش صحیح این هست که کاربرها Login برای ورود به SQL Server نداشته باشند و فقط از طریق Login که برنامه شما انجام میده بتونن به اطلاعات مربوطه دسترسی پیدا کنند (فقط به واسطه Application).

DataMaster
پنج شنبه 27 تیر 1387, 13:42 عصر
روش صحیح این هست که کاربرها Login برای ورود به SQL Server نداشته باشند و فقط از طریق Login که برنامه شما انجام میده بتونن به اطلاعات مربوطه دسترسی پیدا کنند (فقط به واسطه Application).
جناب ثباتي من توي نرم افزار از طريق لوگين و يوزري كه در اسكيوال سرور تنظيم كردم با استفاده از Application با سرور ارتباط برقرار مي كنم
اما كاربراني كه با سيستم كار مي كنند حدودا 100 نفر هستن ، حالا لازم هست كه براي هر كاربر يك لوگين و يوزر تعريف كنم يا از همون يكي استفاده كنم؟؟

AminSobati
پنج شنبه 27 تیر 1387, 18:29 عصر
همیشه سر این موضوع بحث هست. من طرفدار ساختن Login مجزا برای کاربرها هستم. بسیاری از مواقع پیش میاد که لازم داریم رد پای کاربرها رو در Profiler ثبت کنیم و اگر همگی با یک Login کار کنند، این کمکی نمیکنه. از طرفی در SQL Server 2008 امکاناتی وجود داره که تفکیک کردن کاربرها بر اساس Login ما رو قادر میکنه تا ازش استفاده کنیم

s.mostafa.rahmani
دوشنبه 31 تیر 1387, 07:26 صبح
البته براي ثبت ردپاي كاربرها، ما از طريق دلفي يك سيستم لاگين براي كاربرها (حدود 80 كاربر) نوشتيم كه هر عمل Insert، Delete، Update آنها را در يك بانك به همراه مشخصات يوزر و حتي Computer Name سيستمي كه از طريق آن كار انجام شده است، را ثبت مي‌كنيم (البته به همراه تاريخ و بقيه اطلاعات مورد نياز). با اين كار، كوچكترين حركت كاربرها را مي‌توانيم Trace كنيم.

ASKaffash
دوشنبه 31 تیر 1387, 09:46 صبح
سلام
اگر کاربرهای شما از Trigger سر در نمی آورند این Trigger جدول شما را قفل میکند و شما اگر از درون برنامه هر بار Trigger را حذف کنید و کارتان را انجام دهید وسپس Tigger را بسازید جدول ReadOnly شده است


Create Trigger T1 On YourTable
Instead Of Insert,Update,Delete
As
Declare @X TinyInt

nasr
دوشنبه 31 تیر 1387, 11:40 صبح
سلام
اگر کاربرهای شما از Trigger سر در نمی آورند این Trigger جدول شما را قفل میکند و شما اگر از درون برنامه هر بار Trigger را حذف کنید و کارتان را انجام دهید وسپس Tigger را بسازید جدول ReadOnly شده است


Create Trigger T1 On YourTable
Instead Of Insert,Update,Delete
As
Declare @X TinyInt


این Trigger را با چه دستوری باید لغو (حذف ) کرد؟

nasr
دوشنبه 31 تیر 1387, 11:42 صبح
البته براي ثبت ردپاي كاربرها، ما از طريق دلفي يك سيستم لاگين براي كاربرها (حدود 80 كاربر) نوشتيم كه هر عمل Insert، Delete، Update آنها را در يك بانك به همراه مشخصات يوزر و حتي Computer Name سيستمي كه از طريق آن كار انجام شده است، را ثبت مي‌كنيم (البته به همراه تاريخ و بقيه اطلاعات مورد نياز). با اين كار، كوچكترين حركت كاربرها را مي‌توانيم Trace كنيم.

میشه این را به ما هم بدید؟

ممنون

ASKaffash
دوشنبه 31 تیر 1387, 12:34 عصر
این Trigger را با چه دستوری باید لغو (حذف ) کرد؟
سلام
با drop Trigger میتوانید حذف و بعد از اعمال تغییرات مجدد همان دستور را اجرا کنید تا ساخته شود(امتحان کن ضرر نمی کنی)

AminSobati
دوشنبه 31 تیر 1387, 12:47 عصر
ثبت رد پای کاربران محدود به عملیات ویرایش جداول نمیشه که با Trigger کار به نتیجه برسه. گاها پیش میاد که رخ دادن دستور خاصی غیر از ویرایش براتون مد نظر هست که میبایست کاربر رو Trace کنید تا به اشکال Application پی ببرید. همونطور که قبلا اشاره کردم، در SQL Server 2008 امکاناتی وجود داره که برای استفاده از اون بهتره کاربرهای شما تفکیک شده باشند

nasr
چهارشنبه 06 شهریور 1387, 10:21 صبح
ثبت رد پای کاربران محدود به عملیات ویرایش جداول نمیشه که با Trigger کار به نتیجه برسه. گاها پیش میاد که رخ دادن دستور خاصی غیر از ویرایش براتون مد نظر هست که میبایست کاربر رو Trace کنید تا به اشکال Application پی ببرید. همونطور که قبلا اشاره کردم، در SQL Server 2008 امکاناتی وجود داره که برای استفاده از اون بهتره کاربرهای شما تفکیک شده باشند


از شما ممنونم

میشه راهنمایی کنید که چطور این کار را انجام بدم
من 2008 را هم نصب کردم

ممنون

ArtinAraklyan
چهارشنبه 06 شهریور 1387, 14:20 عصر
من سه تا روش می توانم پیشنهاد کنم . ولی این از طریق Console انجام می شه.

می توانم در قسمت Permission های هر Table، آن Usre ی را می خواهی فقط دسترسی Read داشته باشه رو Add کنی و سپس سطح دسترسی insert, update , delete رو براش ببندی و فقط اجازه SELECT بدی
می توانی در قسمت security بری و به user مورد نظر خودت آن db و Table خاص رو به permission در حد read بدی و permission های دیگر رو deny کنی.
می توانی در application خودت یک storedprocedure تعریف کنی و یه پارامتری در آن قرار بدی که وقتی user مورد نظر خودت با آن connect می شه، با call شدن آن،(البته باید query مورد نظر نوشته بشه) اتفاق مورد نظر اجرا بشه.