PDA

View Full Version : گفتگو: آیا استفاده از Sql Server Authentication در هنگام ایجاد Instance ارزش دردسرهاش رو داره ؟



PetekDincos
شنبه 20 آبان 1391, 22:39 عصر
با سلام
من می خوام برای دیتابیس Sql ام پسورد بذارم برای همین از Sql Server Authenticaton هنگام ایجاد Instance استفاده کردم و یه User,Password قرار دادم اما باز هم این طوریکه من متوجه شدم نمی شه مثل دیتابیس Access براش پسورد گذاشت و مثل اون تا اون پسورد رو ندونی نشه از دیتابیس استفاده کرد . اما در دیتابیس Sql می شه با اتچ کردن دیتابیس ، جداول دیتابیس رو در Management Studio مشاهده کرد .
و در موقع استفاده از Sql Server Authentication خیلی محدودیت ها پیش می یاد مثلا نمی شه از به هر جایی Backup و یا از هر جایی پشتیبان رو بازیابی کرد و حتی نمی شه در هر جایی دیتابیس ایجاد کرد بایستی Permission اون کار رو برای آن مکان داشته باشی .
با این شرایط آیا ارزش استفاده از Sql Server Authentication به جای Windows Authentication وجود داره ؟؟؟
ممنون می شم در این زمینه بحث و گفتگو کنید . با تشکر

mansourm
شنبه 20 آبان 1391, 23:28 عصر
دوست عزیز اگه شما برنامه ای که مینویسید تحت شبکه باشه باید از Sql Server Authentiationبرای اتصال به دیتا بیس استفاده کنید
در ضمن حلا دیگه هرکسی به راحتی میتونه پسور دیتا بیس اکسس رو باز کنه

sql server 2005 ,.. همونطوری که گفتید باید با معرفی کاربر و سطح دسترسی قابلیت ها رو به کاربر بدهید و برای backupو restore کردن هم بهتره که فقط مدیر سیسم انجام بده اما باز هم این امکانو داره که از یک سیستم دیگه هم این دستوراتو اجرا کنید

Esmail Solhkhah
شنبه 20 آبان 1391, 23:58 عصر
در اکسس شما روی فایل فیزیکی پسورد ست میکنید در حالی که بحث پسورد گذاری در SQL-SERVER برای کاربر ها است نه فایلهای فیزیکی دیتابیس،کافیه دیتابیس شما رو هر

کسی با مجوز Administrator اتچ کنه و دسترسی کامل بهش داشته باشه.

برای کار با SQL-SERVER تحت شبکه شما میتوانید از هر دو حالت Windows Authentication و Mixed Mode استفاده کنید،تفاوت اینجاست که در مد اول SQL-SEVER بحث بررسی

اعتبار کاربران را به عهده ویندوز میگذارد و در حالت دوم خودش مدیریت میکند.

حالت اول زمانی مناسب کار شماست که SQL-SERVER شما در سروری نصب شده که روی آن سرور اکتیو دایرکتوری ست شده باشه و کاربرهای SQL-SEVER شما به کاربرهای اکتیو

دایرکتوری مپ شده باشن (دامین کنترلر)

حالت دوم برای شبکه هایی مناسب هست که مدیریت متمرکزی روی کاربرهای شبکه نباشه مثلا شبکه های Workgroup.

اینکه شما نیاز به پرمشین روی فولدر های خاص دارید برمیگرده به اینکه سرویس SQL-SERVER شما تحت چه اکانتی اجرا میشه شما به اون اکانت باید مجوز لازم رو بدید.

موفق باشید.

PetekDincos
یک شنبه 21 آبان 1391, 10:48 صبح
با سلام
ممنون از نظرات دوستان ، هدف من از گذاشتن پسورد روی دیتابیس این بود که نذارم محتویات دیتابیس رو کس دیگه ای ببینه که در Sql این امکان نیست پس با این وجود ارزش نداره از Sql Server Authentication استفاده کنم و از Windows Authenticaton استفاده کنم راحترم .
و نیز اینکه ما دو نوع شبکه دریم
1 - Workgroup
2 - Domain
این طوری که من متوجه نظر دوستان شدم در حالت Workgroup بایستی از Sql Server Authenticaton استفاده کنم و در حالت Domain باید از Windows Authenticaton استفاده کنم . آیا این منظور دوستان بوده ؟
با تشکر

Esmail Solhkhah
یک شنبه 21 آبان 1391, 17:24 عصر
برای اینکه اطلاعات دیتابیس قابل دسترسی نباشه بهتره دیتاهای حساس رو انکریپت کنید . البته دقت کنید که چه فیلدهایی رو برای انکریپت استفاده میکنید و از چه الگوریتمی

استفاده میکنید چون کارایی سیستم نهایی رو تحت تائیر قرار میده.



این طوری که من متوجه نظر دوستان شدم در حالت Workgroup بایستی از Sql Server Authenticaton استفاده کنم و در حالت Domain باید از Windows Authenticaton استفاده کنم . آیا این منظور دوستان بوده ؟
بند اول حرفتون درسته ولی در مورد بند دوم میتونید از هر دو حالت Windows Authenticaton و Mixed Mode استفاده کنید ،ولی به پیشنهاد خود مایکروسافت استفاده از

Windows Authenticaton در مورد شبکه های نوع Domain بهتره.دقت کنید در مورد Windows Authenticaton بحث اعتبار سنجی کاربر رو قبلا سیستم عامل انجام داده پس این پروسه

رو دیگه SQL-SERVER انجام نمیده این یعنی هم امنیت (نیازی نیست نام کاربر و کلمه رمز در رشته اتصال بصوررت فریمهای شبکه ارسال بشن ، چون ممکنه شنود بشن) هم کارایی

بهتر.

موفق باشید.

ali_habibi1384
یک شنبه 21 آبان 1391, 17:59 عصر
من با هر دوتا حرفتون موافقم و همه برنامه ها مو بصورت Windows متصل ميشم مگر اينكه تحت شبكه باشه و مجبور باشم. واقعا به دردسرهاي اسكيوال اونم با اون Error Handeling ضعيفش نمي ارزه:چشمک:

PetekDincos
یک شنبه 21 آبان 1391, 20:39 عصر
با سلام
پس در حالت تحت شبکه برای اینکه در دو حالت شبکه درست کار کنه بهتره از Sql Server Authentication استفاده بشه و در این حالت سرعت هم می یاد پایین چون خود من در یه دیتابیس که تقریبا 30 تا جدول داره این رو حس می کنم .
و در حالت Sql Server Authentication برای مثلا ایجاد دیتابیس از طریق برنامه (مثلا با سی شارپ) این permission ها رو چطور ست کنم که مشکل پیش نیاد اگر نمونه کد و یا منبع دارید ممنون می شم معرفی کنید .
و یه سوال دیگه اینکه Collection مربوط به Instance ای که ایجاد می کنم چی باشه آیا Arabic_CS_AS بهتره ؟ چون برای زبان فارسی فکر کنم این بهتر باشه ؟
با تشکر

Esmail Solhkhah
یک شنبه 21 آبان 1391, 20:57 عصر
پس در حالت تحت شبکه برای اینکه در دو حالت شبکه درست کار کنه بهتره از Sql Server Authentication استفاده بشه

بسته به نوع شبکه
اگه Workgroup باشه گزینه موجود فقط SQL Server Authentication
اگه تحت Domain باشه هر دو نوع رو میشه استفاده کرد ولی گفتم برای این نوع شبکه ها (با فرض نصب SQL-SERVER روی سروری که Active Directory روش نصبه) گزینه Windows Authentication انتخاب بهتری هست.


و در حالت Sql Server Authentication برای مثلا ایجاد دیتابیس از طریق برنامه (مثلا با سی شارپ) این permission ها رو چطور ست کنم که مشکل پیش نیاد اگر نمونه کد و یا منبع دارید ممنون می شم معرفی کنید .

permission را برای کاربر مربوطه باید ست کنید dbcreator در Server Roles برای کاربری که نیازه دیتابیس ایجاد کنه
نمونه کد هم تو MSDN هست.


و یه سوال دیگه اینکه Collection مربوط به Instance ای که ایجاد می کنم چی باشه آیا Arabic_CS_AS بهتره ؟ چون برای زبان فارسی فکر کنم این بهتر باشه ؟
بله - قبل از نصب SQL-SERVER روی سرور دقت کنید زبان فارسی رو سیستم عامل ست شده باشه.

موفق باشید.