PDA

View Full Version : نصب sql در سیستم کاربر



mehrdad_shahian
دوشنبه 19 اردیبهشت 1390, 11:02 صبح
سلام
من یه برنامه نوشتم که دینابیسش sql هست.حالا میخوام این برنامه رو روی سیستم کاربر که sql روش نصب نیست ،اجرا کنم.من از دیتابیسم بک آپ گرفتم که فکر نکنم به درد بخوره.راستی اینو هم بگم که موقع setup سازی برای برنامه تیک sql server express رو هم میزنم که قبل از برنامه نصب بشه ولی به کارم نیومد.حالا یکی بیاد بگه که من باید چیکار کنم تا برنامم رو سیستم کاربر نصب بشه.مرسی

morteza271
دوشنبه 19 اردیبهشت 1390, 11:20 صبح
اگه دیتابیس برنامتون رو توی سی شارپ ساختین که فقط کافیه دیتابیستون رو در مسیز پروژه اصافه کنید و البته باید موتور sql رو هم نصب کنید.
ولی اگه دیتابیستون رو توی sql ایجاد کردید باید sql رو هم نصب کنید و دیتابیستون رو روی اون sql هم ایجاد کنید و البته باید توجه کنید که ConnectionString رو درست تنظیم کنید.
موفق باشید

mehrdad_shahian
دوشنبه 19 اردیبهشت 1390, 11:26 صبح
ولی اگه دیتابیستون رو توی sql ایجاد کردید باید sql رو هم نصب کنید و دیتابیستون رو روی اون sql هم ایجاد کنید و البته باید توجه کنید که ConnectionString رو درست تنظیم کنید.
موفق باشید
مرسی از اینکه پاسخ دادین.منظورتون اینه که من sql server رو کامل روی سیستم کاربر نصب کنم و بعد دیتابیسم رو داخل اسکیوال، Restore یا attach کنم؟

mehrdad_shahian
دوشنبه 19 اردیبهشت 1390, 19:11 عصر
منظورم اینه که فکر نمی کنید که این کار یه مقدار غیر حرفه ای؟؟؟!!!!!

morteza271
سه شنبه 20 اردیبهشت 1390, 08:16 صبح
فک نمیکنم غیر حرفه ای باشه.
چون من خیلی برنامه های بزرگ رو دیدم که sql رو نصب کردن.
چاره ی دیگه ای نیست.
مگه اینکه دیتابیس رو در کنار برنامه بذارید و ConnectionString رو برای اونجا تنظیم کنید که اینطوری امنیت خیلی کم میشه.
موفق باشید.

abolfathi
پنج شنبه 22 اردیبهشت 1390, 01:36 صبح
فکر کنم اگر بانک اطلاعاتی بزرگ و حجم داده ها زیاد باشه بهتره که به جای نسخه اکسپرس یه نسخه کامل تر مثل enterprise یا developer یا استاندارد نصب بشه و نسخه اکسپرس برای برنامه های کوچیک بهتره.

اما اگه محیط توسعه مورد نظر باشه که بهتره نصب نشه منتها من نمیدونم چطور کاری کنم که محیط توسعه به همراه موتور SQL نصب نشه ( از طریق ویزارد های نصب برنامه یا احتمالا کد نویسی - مثلا یه بسته نرم افزاری که توزیع میشه چطور موتور اسکیوال رو نصب می کنه ولی محیط توسعه رو نه) .
و اگر همه اینها برای امنیت باشه که برای دسترسی و اختلال در بانک که نیازی به محیط توسعه نیست. از طریق دستورها و توی خط فرمان هم میشه به اشیای بانک دسترسی پیدا کرد . یا اینکه کاربر میتونه فایل بانک رو برداره و توی یه سیستم دیگه استفاده کنه یا اینکه از نو اسکیوال رو نصب کنه در هر صورت داده های حساس در امان نخواهند بود .
حالا من نمیدونم که با تعریف کاربر (user) یا نقش(rule) برای بانک مورد نظر و از این جور کارها میشه این داده های مهم و حساس رو محافظت کرد یا نه .
نتیجه این که فکر می کنم آخرین و مطمئن ترین راه برای حفظ امنیت داده ها و بانک اینه که کدهای زبان اسکیوال رو (مثلا stored procedure ها) با روشهایی که هست و خود اسکیوال داره رمز گذاری کنیم و داده ها رو هم با یه الگوریتم مطمئن بصورت رمزنگاری شده تو بانک درج کنیم که این الگوریتم چی باشه رو باز من نمی دونم چون بالاخره هر رمزی کشف میشه . در کل این راه خیلی سخت و طولانی شد .

چند وقتیه این موضوع فکرمو مشغول کرده. مثلا من اگه بشینم پشت سیستم این مشاور املاک بنده خدا که از نرم افزار املاک یار استفاده میکنه و بانکشو باز کنم و داده هارو حذف کنم یا تغییر بدم چی میشه ؟ قشنگ بانک اصلاعاتی تو مشتم بود . راستی بسته های نرم افزاری معتبر تر هم این مشکل رو دارن ؟

حمیدرضاصادقیان
پنج شنبه 22 اردیبهشت 1390, 09:24 صبح
سلام.


اگه دیتابیس برنامتون رو توی سی شارپ ساختین که فقط کافیه دیتابیستون رو در مسیز پروژه اصافه کنید و البته باید موتور sql رو هم نصب کنید.
ولی اگه دیتابیستون رو توی sql ایجاد کردید باید sql رو هم نصب کنید و دیتابیستون رو روی اون sql هم ایجاد کنید و البته باید توجه کنید که ConnectionString رو درست تنظیم کنید.نیازی به این کار نیست.شما کافیه از طریق همون برنامه SEtup نسخه SQL Express رو نصب کنید. حالا با هرچیزی که دیتابیس رو ساختید در نهایت شما دوفایل با پسوندهای Mdf,Ldf دارید.
که میتوانید با دستورات SQL Server از طریق OSQL دیتابیس مورد نظر رو ایجاد کنید.



و اگر همه اینها برای امنیت باشه که برای دسترسی و اختلال در بانک که نیازی به محیط توسعه نیست. از طریق دستورها و توی خط فرمان هم میشه به اشیای بانک دسترسی پیدا کرد . یا اینکه کاربر میتونه فایل بانک رو برداره و توی یه سیستم دیگه استفاده کنه یا اینکه از نو اسکیوال رو نصب کنه در هر صورت داده های حساس در امان نخواهند بود .
حالا من نمیدونم که با تعریف کاربر (user) یا نقش(rule) برای بانک مورد نظر و از این جور کارها میشه این داده های مهم و حساس رو محافظت کرد یا نه .
نتیجه این که فکر می کنم آخرین و مطمئن ترین راه برای حفظ امنیت داده ها و بانک اینه که کدهای زبان اسکیوال رو (مثلا stored procedure ها) با روشهایی که هست و خود اسکیوال داره رمز گذاری کنیم و داده ها رو هم با یه الگوریتم مطمئن بصورت رمزنگاری شده تو بانک درج کنیم که این الگوریتم چی باشه رو باز من نمی دونم چون بالاخره هر رمزی کشف میشه . در کل این راه خیلی سخت و طولانی شد .....


درمورد مطالبی که عنوان کردید باید عرض کنم در نسخه های جدید قابلیتهای زیادی برای محافظت از اطلاعات به SQL Server اضافه شده است.
درمورد بسته های معتبری که فرمودید من در نسخه 2000 دیتابیسهای خیلی مشهوری مثل همکاران سیستم ، رایورزو... دیدم که به راحتی میشه اطلاعاتش رو تغییر داد.

ولی الان شما میتوانید در نسخه های جدید اطلاعات رو کامل رمز نگاری کنید ، با تعریف user ها و دسترسی های گوناگون میتوانید دست افراد غیر مجاز رو به دیتابیس ببندید.فقط زمان توسعه شما مقداری افزایش پیدا خواهد کرد. برای این موضوع کلمه Encryption رو در سایت جستجو کنید.

موفق باشید

abolfathi
پنج شنبه 22 اردیبهشت 1390, 14:23 عصر
یعنی میشه تنظیمات امنیتی رو به شکلی انجام داد که حتی admin هم نتونه به بانک دسترسی پیدا کنه؟

حمیدرضاصادقیان
شنبه 24 اردیبهشت 1390, 07:48 صبح
سلام.
کاربر Admin خلاصه میتونه دسترسی داشته باشه.مگر اینکه شما فقط با SQL Authentication کار کنید و کاربر Built-in/Administrator رو نیز حذف کنید و برای SA نیز رمز تعریف کنید. با این حالت فقط کاربر SA که رمزشو اگر کسی بدونه میتونه به تمامی دیتابیسها دسترسی داشته باشه.
البته این نکته فراموش نشه که اگر شخص بیاد فایلهای mdf,ldf رو جابجا کنه اونوقت بدون هیچ زحمتی به تمامی اطلاعات شما دسترسی داره که در این حالت باید اطلاعات رمزنگاری شده باشه.