PDA

View Full Version : حرفه ای: ایجاد شبکه بین سیستم ها برای ارتباط به database



davidrobert
دوشنبه 12 مرداد 1394, 14:16 عصر
سلام دوستان خسته نباشید.
من برنامه تحت شبکه دارم مینویسم شدیدا تو ارتباط بین 2 تا سیستم گیر کردم جفت ویندوز های من 8.1 هستش الان میخوام برنامه که نوشتم به اسکیول سرور مورد نظر وصل بشم تو سیستم دیگه داده های برنامه رو بخونم نمی دونم چطور باید این کار رو بکنم حتا من نمی تونم سیستم ها رو مثل شیر شده بیارم قبلا تو ویندوز های پایین تر راحت میمد شبکه شدن کامپیوتر ها اما الان تو 8.1 هر کاری میکنم نمیشه .
دوستان لطفا بهم بگید چطور تا سیستم رو شبکه و سیستمی که فقط روش نرم افزار هستش به دیتابیس که در سیستم دیگه هستش وصل بشه.

مهرداد صفا
دوشنبه 12 مرداد 1394, 14:41 عصر
سلام.
همینکه بتونید سیستمها رو ping کنید برای قدم اول کافیه.
در ویندوز 8 نیاز به تنظیمات windows firewall دارید.
- کلید windows + W رو بزنید، کلمه FIRE رو تایپ کنید و گزینه:
allow an app through windows firewall
رو انتخاب و اجرا کنید.
- گزینه allow another app رو کلیک کرده و برنامه های SqlBrowser و SqlAgent رو انتخاب و دسترسی های مناسب رو بدید.
- در تنظیمات firewall پورت 1433 رو هم باز کنید.
- سایر مراحل رو طبق مقاله زیر دنبال کنید:



در نرم افزارهای بزرگ و چند کاربره، اتصال به بانک اطلاعاتی کامپیوتر سرور، یکی از نیازهای اساسی برنامه نویسان محسوب می‌گردد. در این بخش با دو اصطلاح بسیار مهم سروکار داریم.
1. کلاینت (Client): منظور از کلاینت کامپیوتری است که میخواهد به سرور متصل گردد و از SQL کامپیوتر سرور خدماتی را دریافت نماید.
2. سرور (Server): کامپیوتری است که میخواهیم به آن متصل شویم و داده‌ها را بصورت متمرکز بر روی آن ذخیره و بازیابی نماییم.
به دو روش می‌توان به سرور متصل شد:
1. Windows Authentication
در این روش جهت اتصال به بانک اطلاعاتی، کامپیوتر مبدا یا Client باید عضو شبکه ای باشد کهServer در آن وجود دارد. در واقع برای شبکه هایی استفاده می‌شوند که دارای Domain می باشند وClient به عنوان یک کاربر شناخته شده در سرور تعریف شده است.
2. SQL Authentication
در این روش کلاینت به عنوان یک کاربر یا Login در SQL تعریف شده است و دارای نام کاربری و رمز عبور می‌باشد.
جهت اتصال از راه دور به یک سرور دارای SQL، باید تنظیمات زیر را برای کامپیوتر سرور انجام دهیم:
1. به SQL Server کامپیوتر سرور متصل شوید.
2. در پنجره Object Explorer بر روی نام سرور (اولین آیتم موجود در لیست) کلیک راست کنید و گزینهProperties را انتخاب نمایید.
3. در پنجره ظاهر شده (Server Properties) و در قسمت Select a page (سمت چپ پنجره) بر رویSecurity کلیک کنید.
4. در سمت راست پنجره گزینه SQL Server and Windows Authentication mode را انتخاب کنید.
5. دکمه OK را انتخاب کنید. پنجره پیغامی مبنی بر Restart کردن سرور نمایش داده می‌شود. این پنجره را تایید کنید.
6. مجددا بر روی نام سرور کلیک راست کنید و گزینه Restart را انتخاب نموده و در پیغام ظاهر شده Yesرا انتخاب نمایید.
تا به اینجا سرور آماده پذیرش اتصال از راه دور بصورت SQL Authentication می باشد. حال نوبت به تعریف یک Login می باشد تا توسط این Login بتوانید به سرور از راه دور متصل شوید. مراحل زیر را برای تعریفLogin دنبال کنید:
1. در پنجره Object Explorer به مسیر Security > Logins بروید.
2. بر روی پوشه Logins کلیک راست نموده و گزینه New Login… را انتخاب نمایید.
3. در پنجره ظاهر شده در بخش Login name نامی را به کاربر اختصاص دهید. (به عنوان مثال user1)
4. گزینه SQL Server authentication را انتخاب نموده و در بخش Password و Confirm password رمز عبوری را به این کاربر اختصاص دهید. (به عنوان مثال abc123)
5. گزینه Enforce password policy را از حالت انتخاب خارج کنید تا رمز عبور را از قید سیاستهای رمزگذاری ویندوز خارج کنید.
6. در قسمت Select a page (سمت چپ پنجره) بر روی Server Roles کلیک کنید.
7. در سمت راست پنجره گزینه sysadmin یا هر نوع دسترسی دیگری را که مایل هستید انتخاب نمایید.
توجه: با انتخاب sysadmin کاربر ایجاد شده به کل سرور و بانک‌های اطلاعاتی دسترسی کامل یاAdmin دارد. اگر نمیخواهید کاربر چنین دسترسی داشته باشد، در بخش فوق فقط گزینه public انتخاب شده باشد.
8. در قسمت Select a page (سمت چپ پنجره) بر روی User Mapping کلیک کنید. در این بخش نحوه دسترسی کاربر را به بانکهای اطلاعاتی موجود، مشخص می‌کنیم.
9. در سمت راست پنجره و در بخش Users mapped to this login یک یا چند بانک اطلاعاتی را که میخواهید توسط این Login قابل دسترسی باشند را انتخاب نمایید.
10. پس از انتخاب هر بانک اطلاعاتی، در قسمت پایین (Database role membership for:) نوع دسترسی کاربر به آن Database را انتخاب کنید. در اینجا من db_owner را انتخاب می‌کنم تا کاربر دسترسی کامل به بانک اطلاعاتی انتخاب شده را داشته باشد.
11. دکمه OK را انتخاب کنید تا Login مورد نظر ساخته شود.
حالا می‌توانید از راه دور و حتی از روی خود سرور با کاربر ایجاد شده به سرور متصل شوید. برای این منظور SQL را Disconnect نمایید و یا یکبار SQL Server Management Studio (SSMS) را ببندید و دوباره اجرا نمایید. در پنجره Connect to Server اطلاعات زیر را وارد نمایید:
Server name :نام یا IP سرور (به عنوان مثال 192.168.0.1)
Authentication: انتخاب گزینه SQL Server Authentication
Login: طبق مثال user1
Password: طبق مثال abc123
پس از ورود با مشخصات فوق فقط می‌توانید به بانک اطلاعاتی دسترسی باشید که در قسمت User Mapping انتخاب کرده بودید. اگر sysadmin را انتخاب کرده باشید به تمامی بانک‌های اطلاعاتی موجود دسترسی دارید.

برخی مشکلات اتصال از راه دور
ممکن است در زمان اتصال از راه دور با مشکل عدم امکان اتصال به سرور مواجه شوید. برای این منظور و اطمینان از صحت تنظیمات سرور، موارد زیر را در سرور بررسی نمایید تا بدرستی تنظیم شده باشند:
1. به مسیر Start > All Programs > Microsoft SQL Server 2008/2005 > Configuration Tools > SQL Server Configuration Manager مراجعه کنید و موارد زیر را بررسی نمایید:
1.1. بر روی SQL Server Services کلیک کنید و در سمت راست پنجره بررسی کنید که ستون Stateمربوط به SQL Server Browser و SQL Server در وضعیت Running باشد.
1.2. بر روی آیتم‌های زیر مجموعه SQL Server Network Configuration کلیک کنید و در سمت راست پنجره بررسی کنید که آیتم های Shared Memory، Named Pipes و TCP/IP در وضعیت Enabled باشند.
1.3. بر روی آیتم SQL Native Client Configuration > Client Protocols کلیک کنید و در سمت راست پنجره بررسی کنید که آیتم های Shared Memory، Named Pipes و TCP/IP در وضعیت Enabled باشند.
2. بررسی کنید که فایروال سیستم سرور غیر فعال باشد و یا SQL Server به برنامه های Trust فایروال اضافه شده باشد.



منبع... (http://www.dotnettips.info/post/1919/%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-%d8%a8%d9%87-sql-%d8%a7%d8%b2-%d8%b1%d8%a7%d9%87-%d8%af%d9%88%d8%b1-remote-%d9%88-%db%8c%d8%a7-%d8%a8%d9%87-%db%8c%da%a9-%d8%b3%d8%b1%d9%88%d8%b1-%d8%af%d8%b1-%d8%b4%d8%a8%da%a9%d9%87?updated=1393-09-11-14-15)



- دقت کنید در properties سرور در SSMS ممکنه به جای گزینه windows and sql authentication mod گزینه mixed mode رو داشته باشید.
- سایر مسائل تخصصی شبکه رو داخل تالار مرتبط مطرح کنید.

davidrobert
دوشنبه 12 مرداد 1394, 16:46 عصر
سلام.
همینکه بتونید سیستمها رو ping کنید برای قدم اول کافیه.
در ویندوز 8 نیاز به تنظیمات windows firewall دارید.
- کلید windows + W رو بزنید، کلمه FIRE رو تایپ کنید و گزینه:
allow an app through windows firewall
رو انتخاب و اجرا کنید.
- گزینه allow another app رو کلیک کرده و برنامه های SqlBrowser و SqlAgent رو انتخاب و دسترسی های مناسب رو بدید.
- در تنظیمات firewall پورت 1433 رو هم باز کنید.
- سایر مراحل رو طبق مقاله زیر دنبال کنید:
سلام دوست عزیز ممنون جواب دادید ولی من این 2 تا ابزار رو SqlBrowser , SqlAgent رو پیدا نکردم که نحوه دسترسی رو پیدا کنم در ویندوز 8.1 اگه امکانش هستش فیلم تصویری یا تصویر قرار بدید ممنون میشم. تنظیمات fire wall رو روی 1433 قرار دادم. یه سوال دیگه اینکه باید روی یک سیستم اسکیول سرور نصب باشه یا روی هر سیستم باید نصب باشه اسکیول سرور من اسکیول سرور رو روی سیستم اصلی نصب کردم و میخوامئ به صورت سرور از سیستم دیگه به این اسکیول سرور کامپیوتر اصلی ام وصل بشم میشه یا نه.و همین طور گفتم این 2 تا نرم افزار رو پیدا نکردم.SqlBrowser , SqlAgent
,و fire wall انتی ویروس رو هم غیر فعال کردم انتی ویروس باید fire wall خاموش باشه یا روشن چون windows fire wall بخاطر امنیت بالا انتی ویروس گذینش رو از کار انداختی و از انتی ویروس فایروال رو از کار انداختم

مهرداد صفا
دوشنبه 12 مرداد 1394, 20:15 عصر
سلام.
فقط یک سیستم به عنوان سرور نیاز به نصب sql-server دارد.
تنظیمات گفته شده مربوط به سرور هستند.
تصحیح می کنم: به فایل های:


%programfiles%\microsoft sql server\90\shared\sqlBrowser.exe
%programfiles%\microsoft sql server\mssqlExpress100\mssql\SqlServr.exe
دسترسی بدید کافیه.

alivertex
یک شنبه 15 شهریور 1394, 22:29 عصر
سلام
چند روزه گیر این مطلب هستم ، خواهشا اگه کسی اطلاع داره منو راهنمایی کنه هر چند اندک...
شرح وضعیعت :
ویندوزی که روی سیستم سرور نصب شده ویندوز 8.1 هست و نرم افزار حسابداری مربوطه که دیتابیس اس کیو ال دارد نیز بر رو ی آن نصب است و کلاینت های شبکه به راحتی می توانند به آن وصل شوند. اما ...
1- اگر بخواهیم یکی از کلاینت ها از راه دور و از طریق آی پی استاتیک به کامپیوتر سرور متصل شود دقیقا چیکار باید بکنیم؟
2- این کلاینت (لپ تاپ) در صورتی که بخواهد در شبکه داخلی کار کند و هم از راه دور ، آیا هر بار نیاز به تنظیمات خاصی نیاز دارد؟

alivertex
یک شنبه 15 شهریور 1394, 22:44 عصر
اون مقاله رو هم خوندم و تنظیمات دیتا بیس من به صورت زیر بود بصورت پیش فرض نصب نرم افزار
135034

alivertex
یک شنبه 15 شهریور 1394, 23:01 عصر
مشکل دیگه اینه که موقع نصب نرم افزار برای کلاینت در مراحل نصب آدرس قفل سخت افزاری سیستم را می خواهد ، در شبکه داخلی من آدرس آی پی سرور را میدادم (آی پی اینولید)، در دسترسی از راه دور باید چیکار کرد؟ در کادر مربوطه باید آدرس آی پی استاتیک رو بزنم؟ یکم گیج شدم

alivertex
یک شنبه 15 شهریور 1394, 23:05 عصر
این هم دو تا عکس از مراحل نصب نرم افزار بر روی کلاینت ها


135040

135041

pbm_soy
یک شنبه 15 شهریور 1394, 23:47 عصر
برای اطمینان بد نیست کلا فایروال را خاموش کنید حتی اگر انتی ویروس با فایروال است انرا نیز غیر فعال کنید
بعدا که همه چیز درست شد ا
میتوانید بروید سراغ تنظیمات فایروال
مورد دیگر بله باید ای پی سرور را بدهید در شبکه داخلی اگه کار کند از اینترنت هم قابل دسترسی است به شزطی که فایروالی سر راه ان در اینترنت نباشد حتی در سیستم کلاینت و یا حتی مودم adsl هم میتواند جلوی اینکار را بگیرد
فقط ای پی سرور در حالت اینترنت باید ولید باشد همونی که میگید استاتیک است
در بیشتر مواقع ای پی ولید استاتیک را به مودم داده میشود نه به سرور شما باید کاری بکنید که ای پی به سرور داده بشه ویا اینکه مودم را تنطیم کنید که بسته های sqlرسیده به مودم را بفرستد به سرور شما یا اینکه دو ای پی ولید بگیرید یکی برای مودم و دیگری به سرور که معمولا نمیدهند

alivertex
دوشنبه 16 شهریور 1394, 21:47 عصر
اساتید محترم نظر بدن ببینن من درست متوجه شدم:
1- برای تنظیم آی پی ولید روی سرور فکر کنم باید اتصال به اینترنت رو بر روی بریج تنظیم کنم (الان بصورت ppoe هست)
2- برای تنظیم مودم که بسته های اس کیو ال را بفرستد روی سرور شبکه داخلی فکر می کنم تو تنظیمات مودم یک پورت به نام 1343 رو باید فوروارد کنم روی سرور شبکه داخلی...درسته ؟
مرسی از توجه تون

pbm_soy
سه شنبه 17 شهریور 1394, 00:48 صبح
اگه مودم را بریج کنید فقط بین سرور و اینترنت دیگر مورد دوم هم نیاز نیست و کاری با بسته ها و غیره نخواهید داشت!

ولی بهترین کار اینکه در مودم virtual nat و یا port forwarding انجام دهید شاید در مودم شما تحت عنوان دیگری باشد
در این روش شبکه داخلی باید راه اندازی شود و در مودم باید بگویید تمام بسته ها با پورت شماره خاص را بفرست به این آی پی داخلی
فقط همین یک خط کانفیگ کفایت میکند و سرور شما از اینترنت هم قابل دسترسی است البته باید حواستون به شماره پورتها باشد که تمام شماره پورتهای مورد نیاز سرورتون برای سرویس دادن sql را در اینجا باید اضافه کرده باشید

davidrobert
سه شنبه 17 شهریور 1394, 04:36 صبح
اساتید محترم نظر بدن ببینن من درست متوجه شدم:
1- برای تنظیم آی پی ولید روی سرور فکر کنم باید اتصال به اینترنت رو بر روی بریج تنظیم کنم (الان بصورت ppoe هست)
2- برای تنظیم مودم که بسته های اس کیو ال را بفرستد روی سرور شبکه داخلی فکر می کنم تو تنظیمات مودم یک پورت به نام 1343 رو باید فوروارد کنم روی سرور شبکه داخلی...درسته ؟
مرسی از توجه تون
دوست عزیز من که این تاپیک ایجاد کردم جواب گرفتم .
اول شما این فیلم اموزشی شبکه کردن اسکیول سرور رو ببین http://uplod.ir/fy8qjgddkojh/SQL_NETwork.7z.htm
دوم توو برنامه یه قسمت ip قرار بده مثلا اگه برنامه شما روی تا سیستم نصب هستش و یکی از برنامه ها روی یکی از 5 سیستم نصب هستش بیاد روی برنامه خود این دستور رو بنویسید وقتی برنامه load شد private void findIP()
{
string hostName = Dns.GetHostName(); // Retrive the Name of HOST

Console.WriteLine(hostName);

// Get the IP

string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();

//Console.WriteLine("My IP Address is :" + myIP);
TxtIp.Text = myIP;
//Console.ReadKey();
//TxtIP.Text = myIP + @"\sqlexpress";
}
و این دستور نوشتید و به این صورت private void TxtIp_DoubleClick(object sender, EventArgs e)
{
findIP();
} ایجاد کردید حالا برنامه شما میاد ip سیستم شما رو میده و راحت ip رو به دست میارید ولی بگم چون ممکنه این کد رو روی تمام برنامه بنویسید تو هر سیستم ip مختلف خود سیستم میده شما باید ip فقط سیسم که دیتابیس داره رو بهش بدید دیده باشید کد رو من کد رو تو دابل کلیک نوشتم ولی تنظیمات قرار دادم که ip رو ذخیره کنه و موقع فراخونی ip شناسه که از قبل ذخیره شده رو میاره و باعث براقراری ارتباط با دیتابیس میشه .
این نکته رو توجه کنید باید برای برنامه تنظیم کادری متنی برای به دست اوردن ip قرار بدید شاید مشتری خودش بلد نیست وارد cmd بشه و ip رو به دست بیاره دوم هر نوع ارتباط با دیتابیس هر دفعه ip عوض میشه یعنی شما یا به صورت سیستم داخلی وصل بشید یا wifi یا شبکه یا LAN هی ip عوض میشه ولی یک نوع ثابت ارتباط با دیتابیس دارید من خودم به شخصه همه راه ها رو ارتباط رو استفاده کردم جواب گرفتم.ولی باید یک روش ، روش ثابت شما باشه تا به دیتابیس وصل بشید که IP دستگاه شما عوض نشه.

esagraphic
یک شنبه 17 آبان 1394, 15:23 عصر
دوست عزیز من که این تاپیک ایجاد کردم جواب گرفتم .
اول شما این فیلم اموزشی شبکه کردن اسکیول سرور رو ببین http://uplod.ir/fy8qjgddkojh/SQL_NETwork.7z.htm
دوم توو برنامه یه قسمت ip قرار بده مثلا اگه برنامه شما روی تا سیستم نصب هستش و یکی از برنامه ها روی یکی از 5 سیستم نصب هستش بیاد روی برنامه خود این دستور رو بنویسید وقتی برنامه load شد private void findIP()
{
string hostName = Dns.GetHostName(); // Retrive the Name of HOST

Console.WriteLine(hostName);

// Get the IP

string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();

//Console.WriteLine("My IP Address is :" + myIP);
TxtIp.Text = myIP;
//Console.ReadKey();
//TxtIP.Text = myIP + @"\sqlexpress";
}
و این دستور نوشتید و به این صورت private void TxtIp_DoubleClick(object sender, EventArgs e)
{
findIP();
} ایجاد کردید حالا برنامه شما میاد ip سیستم شما رو میده و راحت ip رو به دست میارید ولی بگم چون ممکنه این کد رو روی تمام برنامه بنویسید تو هر سیستم ip مختلف خود سیستم میده شما باید ip فقط سیسم که دیتابیس داره رو بهش بدید دیده باشید کد رو من کد رو تو دابل کلیک نوشتم ولی تنظیمات قرار دادم که ip رو ذخیره کنه و موقع فراخونی ip شناسه که از قبل ذخیره شده رو میاره و باعث براقراری ارتباط با دیتابیس میشه .
این نکته رو توجه کنید باید برای برنامه تنظیم کادری متنی برای به دست اوردن ip قرار بدید شاید مشتری خودش بلد نیست وارد cmd بشه و ip رو به دست بیاره دوم هر نوع ارتباط با دیتابیس هر دفعه ip عوض میشه یعنی شما یا به صورت سیستم داخلی وصل بشید یا wifi یا شبکه یا LAN هی ip عوض میشه ولی یک نوع ثابت ارتباط با دیتابیس دارید من خودم به شخصه همه راه ها رو ارتباط رو استفاده کردم جواب گرفتم.ولی باید یک روش ، روش ثابت شما باشه تا به دیتابیس وصل بشید که IP دستگاه شما عوض نشه.



سلام من از اون فلم هم نهایت استفاده کردم عالی بود مشکلی تو نتورک کردنش ندارم از چندین روش هم وصل شدم حالا سوال من من میرم یک valid ip میخرم میخوام از یه سیستم دگه به صورت انترنت به همین ip که Sql server دارم وصل بشم این تنظیمات را کجا باید انجام بدم اگه رهنمائی کنید ممنون میشم

hyperboy743
پنج شنبه 23 دی 1395, 09:51 صبح
دوست عزیز windows and sql authentication mod همان mixed mode می باشد .