PDA

View Full Version : سوالاتی در رابطه با دیتابیس های تحت شبکه ...



sirvan-me
پنج شنبه 04 آبان 1391, 00:59 صبح
سلام ... چند تا سوال در رباطه با دیتابیس های تحت شبکه داشتم .. ممنون میشم راهنمائیم بفرمائید ...

دیتابیس روی سرور قرار داره ... نرم افزاری نوشتیم که روی Client ها نصبه و از طریق اون می تونن با دیتابیس روی سرور ارتباط برقرار کنن ...

حالا سوالات

1 ) فرض کنید ما 10 تا Client داریم . آیا نیاز هستش که به تعداد Client ها User برای SQL SERVER تغریف کنیم ؟ اینم بگم که Client ها در مرحله ای از روند برنامه تو دیتابیس اطلاعات Insert می کنن ( اما با کلید منحصر به فرد در جدولی خاص .... )

2 ) عده ای میگن برای برقراری ارتباط نیاز به خاموش کردن Firewall نیست و میشه Rule تعریف کرد ... آیا تعریف Rule بهتر از خاموش کردن Firewall هستش ؟ تنظیم Rule باید در سمت Server باشه یا کلاینت ؟!

3 ) به غیر از فعال سازی پروتکل TCP/IP و خاموش کردن فایر وال و تنظیم Connection String آیا نیاز به تنظیمات دیگه ای هم برای برقراری ارتباط هست ؟!

4 ) برای برقراری ارتباط بین Client ها یا Server نیاز به نصب SQL SERVER NATIVE CLIENT روی سرور ها هستش ؟!

5 ) اگر رو دیتابیسی که رو سرور هستش در جدولی خاص فیلدی برای ذخیره ی عکس داشته باشم و به جای ذخیره ی خود عکس مسیر اون رو روی سرور در فیلد مربوط ذخیره کنم ... چطور می تونم عکس رو روی Client ببینم ... آیا حتما باید خود عکس رو ذخیره کنم ... سرعت انتقال دیتا تغییر نمی کنه ...

Y_Safaiee
پنج شنبه 04 آبان 1391, 03:40 صبح
با سلام خدمت شما دوست عزیز

1.من چند سال پیش این اشتباه رو میکردم و یوزر تعریف میکردم خوبیش این بود که هر یوزر فقط به داده های خودش سر و کار داشت و همچنین میشد تعداد کلاینت ها رو محدود کرد,اما مشکل اینجا بود که وقتی ویندوز عوض میکردن و دوباره Sql server نصب میکردن باید دوباره تمامی یوزرها رو برای لوگین شدن تعریف میکردن که چون سازمان بود و نمیتونستن مجبور بودم پشتیبانی از مشهد برم اصفهان,در صورتی که مدیر/کاربر اصلیتون از داخل برنامه میتونه اتوماتیک لوگین تو Sql Server بسازه این کار خوبه وگرنه من توصیه دارم یه جدول مثلا کاربران داخل دیتابیس بزارین و غیر مشخصات اصلی مثل کدکاربری,نام کاربری,رمز و ... یه فیلد سطح دسترسی به صورت رشته ای بسازین و مقادیرشو با زدن تیک های مربوطه پر کنید,مثلا کاربر A با کد کاربری 123456 سطح دسترسیش 0,1,1,0,1 اینطوری باشه که مثلا میشه نتونه حذف کنه,بتونه گزارش بگیره,بتونه ادیت کنه,نتونه فرم ... رو باز کنه,بتونه تنظیمات برنامه رو تغییر بده

2.معمولا برای ارتباط تحت شبکه بهتره Firewall خاموش باشه,اما بازم راحت ترین کار نسبت به Rule (قانون یا قاعده) ساختن اینه که نام برنامه رو در لیست سفید فایروال قرار بدین تا بهش گیر نده.

3.بله باید در سمت سرور Sql Server که دیتابیس بهش Attach شده رو از حالت Local به حالت Remote Connection ببرین و Network Configure سرور رو ست کنین(در صورتی که تنظیم نبودن).

4.برای کلاینت ها نه (در صورتی که توصیه میشه برای حذف ارورهای احتمالی نصب شن) اما برای سرور با نصب Sql Server خودش به صورت اتوماتیک نصب میشه(کادر اول که ساپورت فایل ها رو کپی میکنه بعد Next میزنین).

5.در نسخه اس کیو ال 2008 در هنگام نصب سربرگی داره به اسم FileStream اگه تیکشو بزنین این امکان رو بهتون میده که بتونین فایل ها رو از مسیر ذخیره شده خونده و به صورت فیلد در بیارین
اینم نمونه سایت که اینکارو توضیح داده :

http://msdn.microsoft.com/en-us/magazine/dd695918.aspx

راه راحت ترشم اینه که سما مسیرو ذخیره کنین بعد که تصویر فراخوانی شد با یک SP یه فیلد از نوع باینری بسازین و از این بخونین و تو اون ذخیره کنین.بعد اینکه عکس توسط کاربر برداشته شد و داخل حافظه MemoryStream کاربر قرار گرفت دوباره فیلد حذف شه.


این تجربه من تو ایام برنامه نویسیم بود شاید سایر روش ها بهتر و بهینه تر باشه اما هر روشی برای همه مکان ها مناسب نیست و بعضی جاها جز دردسر سودی برات نداره.

منم منتظر پاسخ سایر دوستان و مهندسین میمونم تا انشالله منم یه چیزی بیشتر یاد بگیرم و علمم بیشتر شه.

موفق باشی
بایت بایت

sirvan-me
پنج شنبه 04 آبان 1391, 15:48 عصر
بسیار عالی از جواب های کامل و صحیح تون ... فقط یه سوال برام باقی موند که اون هم اینه ....

سرعت انتقال دیتا تو حالتی که عکس تو دیتابیس ذخیره بشه بیشتره یا حالتی که شما در رابطه با اون صحبت کردین ؟

sirvan-me
جمعه 05 آبان 1391, 11:54 صبح
چی شد پس ؟!