تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 6 12345 ... آخرآخر
نمايش نتايج 1 به 10 از 57

نام تاپيک: اتصال دیتابیس به سرور

  1. #1
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض اتصال دیتابیس به سرور

    سلام
    من میخوام دیتا بیس رو به یک سرور مرکزی وصل کنم تا برنامه که روی 10 تا سیستم نصب میشه همشون اطلاعات رو روی یک جا بریزند و از اونجا بخونند.
    می خوام ببینم پیکار باید بکنم. مثلا کانکشن استرینگ رو تغییر بدم کافیه ؟
    مثلا اگه به ما یه آدرس آی پی بدن چیکار باید بکنیم. فقط کافیه پورت و آدرس آی پی رو توی کانکشن استرینگ بنویسیم ؟
    یه سوال دیگه هم اینکه میشه با دامین هم این کار رو انجام داد؟ چه جوریه اگه میشه؟

    ممنون

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    کافی است SQLServer را روی رایانه سرور نصب و پیکربندی کنید و نیازی به نصب مورد اضافه ای هم در کلاینت ها نیست (برخی موارد دیده شده که دوستان اشتباه میکنند و گمان میکنند باید SQLServer روی کلاینت هم نصب شود که صحیح نیست) بعد هم در برنامه ConnectionString مناسب را اصلاح میکنید.
    در واقع برنامه شما باید مجهز به فرمی برای تنظیم ConnectionString خود باشد و چهار پارامتر اصلی اتصال را از کاربر دریافت و ConnectionString خود را بسازد و ذخیره کنید.
    نام یا آی پی سرور SQLServer
    نام دیتابیس روی SQLServer
    نام کاربری اتصال به دیتابیس
    رمز عبور اتصال به دیتابیس

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    دامین و غیر دامین هم هیچ فرقی ندارد(!)، اگر سرویس DNS مطمئنی در شبکه دارید میتوانید از نام سرور جهت اتصال استفاده کنید وگرنه درج IP هم کافی و موثر است.

    در برنامه نویسی هم فقط باید رعایت پاره ای مسائل همزمان را داشته باشید و لحاظ کنید که شاید بین باز شدن تا بسته شدن یک فرم کوچک در برنامه شما، افراد دیگر در شبکه چندین تراکنش مختلف انجام داده باشند...
    مشکلات و خطاهای منطقی نرم افزار شما در شبکه معمولاً با مجهز بودن جداول دیتابیس شما به کلیدهای AutoNumber بسیار زیاد کاهش پیدا میکند، قبلاً بارها گفتم و باز تکرار میکنم که اگر نمیخواهید لزومی ندارد کاربر سیستم شما از وجود این فیلدها مطلع باشد و لزوماً نیازی نیست حتماً این فیلدها را در UI به کاربر نشان دهید.
    کلیدهای AutoNumber تضمین کننده عدم تکراری بودن است و نیز تضمین میکند وقتی سطری را برای بروزرسانی باز یکنید تا بخواهید ذخیره کنید کلیدش تغییر نکند! و...

    موفق باشید.

  3. 3 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  4. #3
    پروفشنال
    تاريخ عضويت
    Nov 2007
    پست ها
    546

    پيش فرض

    بسم الله الرحمن الرحیم
    با سلام
    از استاد جناب _H2_ کمال تشکر رو دارم که وقت گذاشتند.

    (برخی موارد دیده شده که دوستان اشتباه میکنند و گمان میکنند باید SQLServer روی کلاینت هم نصب شود که صحیح نیست)
    برای این مورد که فرمودید 2تا ستاپ درست کنیم؟ که یه مورد برای کلاینت ها و مورد دیگری برای سرور اجرا شود.

    در واقع برنامه شما باید مجهز به فرمی برای تنظیم ConnectionString خود باشد و چهار پارامتر اصلی اتصال را از کاربر دریافت و ConnectionString خود را بسازد و ذخیره کنید.
    نام یا آی پی سرور SQLServer
    نام دیتابیس روی SQLServer
    نام کاربری اتصال به دیتابیس
    رمز عبور اتصال به دیتابیس
    به نظر شما بهترین مکان برای ذخیره ConnectionString کجاست؟

    با سپاس فراوان

  5. #4
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    به نظر شما بهترین مکان برای ذخیره ConnectionString کجاست؟
    یعنی چی؟ مگر کانکشن استرینگ رو ذخیره هم میکنن؟

  6. #5
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض

    دامین و غیر دامین هم هیچ فرقی ندارد(!)، اگر سرویس DNS مطمئنی در شبکه دارید میتوانید از نام سرور جهت اتصال استفاده کنید وگرنه درج IP هم کافی و موثر است.
    میشه یه نمونه از کانکشن استرینگ دامین هم بگید.

    به نظر شما بهترین مکان برای ذخیره ConnectionString کجاست؟
    منم این سوال رو داشتم.
    ممنون

  7. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    یعنی چی؟ مگر کانکشن استرینگ رو ذخیره هم میکنن؟
    دلیل تعجب شما را نمیدانم ولی این کار هم در برنامه های دسکتاپی و هم وب، رایج است.
    اگر دقت کنید در هر دو گروه (دسکتاپ و وب) سایر شرکت های ایرانی و خارجی هم همواره میتوانید شاهد این مورد باشید

    فقط به عنوان یک نمونه مثال میتوانم به MediaPortal از گروه برنامه های دسکتاپی و DotNetNuke از گروه محصولات وبی اشاره کنم که هر دو در زمان نصب فرمی برای تنظیم ConnectionString نمایش داده و رشته اتصال را ذخیره و حفظ میکنند
    (از برنامه های ایرانی هم بدلیل شبه تبلیغات صرف نظر میکنم)

    تنها دلیلی که میتوان بدلیل آن ConnectionString را ذخیره نکرد آن است که User های برنامه همان User های SQLServer باشد تا کاربر هر بار User و Pass را وارد کند ولی این مورد خیلی کاربردی ندارد.

    در حالیکه در سوی مقابل برنامه ها نیاز به داشتن ارتباط پایدار با دیتابیس دارند:
    - برنامه ها بدلیل نیاز به قابلیت های گسترده مجوزدهی، ترجیح میدهند خودشان سیستم اکانتینگ و User و Pass را در جداول دیتابیس پیاده سازی کنند که یعنی استقلال از User و Pass اصلی دیتابیس و داشتن ارتباط کامل با آن
    - بسیاری از برنامه ها سرویس هایی خودکاری (WinService) دارند که باید بدون لاگین کاربرهم، ارتباط پیوسته با دیتابیس داشته باشند (مانند برخی پشتیبان گیری های خودکار مستقل از مکانیزم خودکار SQLServer یا برخی سرویس های پیام رسانی و...)
    - بجز User و Pass ، رشته اتصال شامل IP سرور و نام دیتابیس هم میشود که این مقادیر برای عموم کاربران عادی، میتواند مبهم و پیچیده باشد و چیزی از آن نمیدانند، این موارد در محدوده دانش کارکنان بخش فنی شرکت ها است و از چشم کاربران عادی دورنگاه داشته میشود تا هم اشتباهاً تنظیم نشوند و هم کاربران معمولی را سردرگم نکند. پس نیاز است این مقادیر در پشت پرده حفظ و نگاه داری شود.
    و...

    همه این موارد مستلزم آن است خود برنامه ارتباط پایداری با دیتابیس داشته باشد و رشته اتصال صحیح را مستقلاً در اختیار داشته باشد.

    میشه یه نمونه از کانکشن استرینگ دامین هم بگید
    Workgroup, Domain, Web, Internet و... فرقی ندارد تا وقتی IP مجاز و پینگ شونده ای از سرور داشته باشید.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    به نظر شما بهترین مکان برای ذخیره ConnectionString کجاست؟
    در برنامه های وبی تقریباً همه برنامه ها از همان web.config استفاده میکنند، هم به حد کافی امن است و هم رایج و عرف است.
    برای برنامه های دسکتاپی خود مایکروسافت و VS به صورت پیشفرض ApplicationName.config را پیشنهاد میکنند ولی کمی از جنبه امنیتی دلچسب نیست (چون برخلاف همزاد وبی اش یک کاربر (کمی شیطان و با معلومات!) میتواند آن را بخواند و سرخود به دیتابیس متصل شود)

    میتوانید از Settings یا فایل دستی دیگری استفاده کنید، مهم نیست! مهم آن است که بهتر است این اطلاعات را رمزنگاری و سپس ذخیره کنید تا هرکسی نتواند User و Pass اصلی دیتابیس را مشاهده کند.
    نمونه بسیار بسیار ساده ای میتوانید در زیر مشاهده کنید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    برای این مورد که فرمودید 2تا ستاپ درست کنیم؟ که یه مورد برای کلاینت ها و مورد دیگری برای سرور اجرا شود
    بله تقریباً.
    در واقع برنامه شما شامل دو بخش نصب SQLServer و نصب برنامه اصلی میتواند باشد که لزوماً میتواند یکی از این بخش ها انجام نشود.
    حال چه دو Setup مستقل باشد و یا یک Setup باشد که با دکمه رادویی یا چک باکس و... نصب دو جزء فوق را کنترل کند، این دیگر تصمیم شماست!

    موفق باشید.

  8. #7
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    دلیل تعجب شما را نمیدانم ولی این کار هم در برنامه های دسکتاپی و هم وب، رایج است.
    اینکه قسمتی از کانکشن استرینگ موقع نصب تکمیل بشه یا مثال های شما، یه چیز دیگس....!!!
    کانکشن استرینگ رو ذخیره میکنن رو ولی هنوز من نفهمیدم یعنی چی!

  9. #8
    پروفشنال
    تاريخ عضويت
    Nov 2007
    پست ها
    546

    پيش فرض

    بسم الله الرحمن الرحیم
    با سلام
    - بسیاری از برنامه ها سرویس هایی خودکاری (WinService) دارند که باید بدون لاگین کاربرهم، ارتباط پیوسته با دیتابیس داشته باشند (مانند برخی پشتیبان گیری های خودکار مستقل از مکانیزم خودکار SQLServer یا برخی سرویس های پیام رسانی و...)
    لطفا راجع به این مطلب توضیحات بیشتری بفرمائید.

    میتوانید از Settings یا فایل دستی دیگری استفاده کنید، مهم نیست!
    در حالتی که شبکه است چه جوری کلاینت ها میتونند از Settingsی که در سیستم سرور ذخیره می شود؛ استفاده کنند؟ تصور بنده تا این جای کار این بود که فصل مشترک بین کلاینت و سرور تنها پایگاه داده است. درست است؟

    در نمونه ای که آورده اید اون dllی که برای اتصال با بانک استفاده کرده اید کار خودتونه یا از جایی گرفتید؟ برای این می پرسم که در این جور مواقع باید به کدها اعتماد کردید و سریع سراغ جستجو رفت یا از سایت ها ایده بگیریم و خودمون دست به کار شیم؟

    از نمونه ای هم که گذاشتید بینهایت سپاسگزارم.

  10. #9
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    نقل قول نوشته شده توسط senaps
    کانکشن استرینگ رو ذخیره میکنن رو ولی هنوز من نفهمیدم یعنی چی!
    اگر میتوانید کمی بیشتر دلیل و منطق تعجب تان را تشریح بفرمائید تا بتوانیم بهتر مذاکره کنیم و بحث را ادامه دهیم، شاید اصلاً نکته دید تفاوتی وجود نداشته باشد و فقط من بد توضیح داده باشم یا شما بد متوجه شده باشید و اگر اگر چراغ ها روشن شود ببینیم که اختلافی وجود ندارد.

    توضیح دیگری میدهیم:
    گمانم حداقل سر این مطالب توافق داریم:
    1- برنامه های دیتابیس گرای ما به چیزی به نام ConnectionString صحیح نیاز دارند تا کار کنند.
    2- ConnectionString مولفه هایی مثل نام/IP سرور دارد که مقداری ثابت نیستند و درنتیجه نمیتواند یک const ساده در برنامه باشد.
    3- طبق منطق قبل نتیجه آن میشود که این ConnectionString تا باید هربار در رایانه ساخته شود یا قابل تنظیم و ذخیره سازی و استفاده مجدد باشد.

    تا اینجا را قبول دارید، خوب اگر خواستید بقیه این شفاف سازی با شما ...

    نقل قول نوشته شده توسط shotok
    بسیاری از برنامه ها سرویس هایی خودکاری (WinService) دارند که ...
    لطفا راجع به این مطلب توضیحات بیشتری بفرمائید
    برخی موارد (بیشتر در برنامه های بزرگ سازمانی) نیاز میشود تا برنامه خدمات اضافه ای را در شبکه همواره ارائه دهد...
    این خدمات مثلاً میتواند یک سیستم اختصاصی زمان بندی وظایف باشد که باید کارهایی خودکار در زمان بندی های خاصی خودکار انجام شود ...

    یا مثلاً سیستم اختصاصی ذخیره سازی فایلهای پیوست و اسناد
    (((
    به دلایل مختلفی که اینجا جایش نیست، افراد ترجیح میدهند فایلهای پیوست اسنادشان را در دیتابیس آرشیو نکنند،
    این فایلها میتواند اسناد تصویری و Word و Excel و اسناد اسکن شده و رسیدها و... باشد باید در ارتباط با سند خاصی در دیتابیس ذخیره شود ولی همانطورکه گفتم گاهاً نه در خود دیتابیس،
    این سامانه میتواند (یک راه حلش) یک WinService در ارتباط با دیتابیس باشد که در بستر Tcp یا Http یا Ftp و... اجازه آپلود و دانلود فایلهای پیوست به اسناد را درون سرور بدهد،
    در این شرایط همچین سرویسی همواره Run است و همواره با دیتابیس در ارتباط است و به کل کاربران در شبکه خدمات میدهد،
    )))

    همچین سرویس هایی باید مستقلاً ConnectionString را بدانند و به دیتابیس دسترسی داشته باشند.

    نقل قول نوشته شده توسط shotok
    در حالتی که شبکه است چه جوری کلاینت ها میتونند از Settingsی که در سیستم سرور ذخیره می شود؛ استفاده کنند؟ تصور بنده تا این جای کار این بود که فصل مشترک بین کلاینت و سرور تنها پایگاه داده است. درست است؟
    بله فرمایش شما کاملاً صحیح است و من هم همچین منظوری نداشتم.
    این مشخص میکند که یا من بد توضیح دادم یا دوستان بد متوجه شده اند، شاید همین بیان بد محل ابهام دوستمان senaps هم باشد ...

    قرار نیست کلاینت ها از Setting ای در سرور استفاده کنند...
    (((
    اینکه میشود ماجرای انیمیشن 'لوک خوش شانس' و برادران 'دالتون'، درقسمتی، گاوصندوق میخردید و کلیدقفل گاوصندوق را درون خود آن میگذاشتند ... بگذریم ...
    ما تا وقتی مشخصات سرور را نداریم که نمیتوانیم به آن وصل شویم، ما نمیتوانیم Setting ای را که خود مشخص کننده IP سرور است را از سرور بخوانیم ...
    )))


    ما این Setting خاص (حاوی رشته اتصال) را در هر رایانه و در خود آن جداگانه تنظیم و ذخیره میکنیم، در واقع این Setting کلید ارتباط برنامه با دیتابیس است.
    سایر تنظیمات برنامه را میتوان بطور سرتاسری در یک جدولی در دیتابیس ذخیره کرد ولی ConnectionString فرق دارد و باید هررایانه خودش آن را ذخیره کنید.
    اگر {سرور + دیتابیس} را یا هم یک گاوصندوق در نظر بگیریم که حاوی اشیای ارزشمندی است، کلید این {سرور + دیتابیس} خودش یک شی و ارزشمند است.
    ولی کلید گاوصندوق تنها شی ارزشمندی است که نمیتواند داخل گاوصندوق باشد!

    یادتان هم نرورد که پنجره تنظیمات رشته اتصال باید قبل از ورود به برنامه (مثلاً با دکمه کوچکی در فرم لوگین) هم باید در دسترس باشد.
    در یک برنامه دسکتاپی شما نمیتوانید فرم تنظیم رشته اتصال را فقط و فقط درون محیط برنامه و بعد لوگین قرار دهید ... ! چرایش را گمانم میدانید !

    نقل قول نوشته شده توسط shotok
    در نمونه ای که آورده اید اون dllی که برای اتصال با بانک استفاده کرده اید کار خودتونه یا از جایی گرفتید؟ برای این می پرسم که در این جور مواقع باید به کدها اعتماد کردید و سریع سراغ جستجو رفت یا از سایت ها ایده بگیریم و خودمون دست به کار شیم؟
    بله یک کتابخانه کد شخصی از خودم است که چند کنترلر دیگر هم دارد، بخش های مختلف کنترلری هم که دیدید بسته به نیاز قابلیت مخفی شدن دارد.

    ولی بارها گفتم که مثال های برای ایده گرفتن و دیدن نمونه آماده و مشاهده تصور و ایده دیگران هستند.
    این به هیچ وجه معنی آن را نمیدهد که تا مثالی دیدم، ما هم باید فوراً کد آن را Copy و Paste کنیم و عین آن را انجام دهیم.
    شما میتوانید از مشاهده اجرا و مشاهده کد این قبیل مثال ایده بگیرید و شاید خودتان چیز بسیار کاملتر و دقیق تر و مناسب تری برای برنامه خودتان درست کنید.
    در این مثال هم اگر دقت کنید دو پنجره تنظیمات مجزا و موازی دارد.
    که در یکی از control اماده ghdiamond.win.dll استفاده شده
    و
    در دیگری شاهد یک نمونه ساده هستید که کار با چهار TextBox ساده انجام شده

    این دیگر نیاز و برنامه و ایده شخصی شماست که چطور و به چه شکل این کار را انجام دهید.

    از صمیم قلب، موفق باشید!

  11. #10
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    تا اینجا را قبول دارید، خوب اگر خواستید بقیه این شفاف سازی با شما ...
    خوب بعدش وقتی داریم برنامه رو نصب میکنیم(من میذارم تو تنظیمات )، مشخصاتی که میخوایم (ای‌پی سرور و یوزر نیم و پسوردی که براش تو سرور ست کردیم تا باش لاگین کنه رو وارد میکنیم!)...
    بعدش هم میریم جلو...

    حالا برای چی باید کانکشن استرینگ رو ذخیره کنیم؟
    یعنی مگر یک بار در بالا ست نکردیم که سرورمون کجاست و چطوری بهش دسترسی پیدا بکنیم؟
    مگر کانکشن استرینگ رو یک بار تعریف نمی‌کنیم؟
    یک بار هم ست میکنیم و میرود پی کارش....

    استنباط من این بود که دوستان میگند که کانکشن جای دیگری برای ذخیره شدن داره یا میخوان هر بار باز دوباره ذخیره بکنن؟؟؟
    فک کنم سوتفاهم شده در اون بخش ذخیره کردنش!!!!

    تعجب من از این بود که مگر کانکشن رو اول کار که برنامه نویسی میکنیم جاش مشخص میشود، یا اخر کار؟
    مثلا من وقتی دارم کلاینت رو برنامه نویسی میکنم، در لایه‌ي دسترسی‌ام، یک بار توی یک کلاسی یک کانکشن استرینگی میسازم و چند قسمتش رو با استرینگ بیلدر و از توابع لایه های بالاتر میگیرم و ست میکنم...
    ایا غیر از اون یک مرتبه، جای دیگری باید ذخیره بکنم؟
    چون یک کانکشن بیشتر نداریم دیگه

    در یک برنامه دسکتاپی شما نمیتوانید فرم تنظیم رشته اتصال را فقط و فقط درون محیط برنامه و بعد لوگین قرار دهید ... ! چرایش را گمانم میدانید !
    منظور مثل همون پروژه های دانشگاهی هستش که برای هر فرم، یه بار کانکشن استرینگ می‌نویسن؟! و کل کار رو از ۰ انجام میدن؟؟؟؟
    Last edited by senaps; 27-02-2013 at 00:02.

صفحه 1 از 6 12345 ... آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •