PDA

View Full Version : در مورد اتصال به اس کیوال سرور شبکه که تحت domain



mehdi_522
یک شنبه 13 شهریور 1390, 12:26 عصر
سلام دوستان عزیز
من یک برنامه نوشتم که دیتا بیس ان sql server 2005 می باشد که روی سرور نصب شده است که سرور تحت domain م باشد حال میخواهم از طریق ip کلاینت ها به sql server وصل بشن این پیغام رو میده حال اگر کلاینت ها در حالت ورک گروپ باشن هیچ مشکلی وجود نداره اما با حالت domain این مشکل وجود دارد
واز این کانکشن استرینگ استفاده میکنم
لطفا راهنمایی فرماید
ConnectionStr = " Data Source=192.168.100.1,1433;Initial Catalog=Archive;Persist Security Info=True;Integrated security=SSPI;Connect Timeout=0;User ID=ParsSaman;Password=2512269;";74821

Esmail Solhkhah
یک شنبه 13 شهریور 1390, 13:48 عصر
شما اگه SSPI ست کردید یعنی میخاید از Authentication نوع ویندوز استفاده کنید

که درستش هم برای حالتی که SQL SERVER روی سروری نصبه که اون سرور DC هست ، همینه

اول : نوع Authentication اس کیو ال رو Windows بذارید

دوم: دیگه نمیخاد کاربر و رمز رو تو کانکشن استرینگ مشخص کنید ، چون SQL SERVER تشخیص هویت رو از ویندوز میگیره و اگه کاربری که به DC لاگین شده کاربر معتبری باشه بحث لاگین به SQL SEVER میره به مرحله

بعدی ، یعنی شما به ازای هر کاربر تو Active Directory که میخاید بتونه با SQL SERVER هم ارتباط داشته باشه باید همون کاربر رو تو لیست کاربرهای SQL SEVER هم تعریف کنید.

پرمیشین های لازمه هم فراموش نشه. (کاربر رو به لیست کاربهای دیتابیستون هم اضافه کنید و سطوح دسترسی شو مشخص کنید)

موفق باشید.

mehdi_522
یک شنبه 13 شهریور 1390, 19:27 عصر
دوستان با تشکر از راهنمایی شما
حالا اگر dc سرور در حالت domain نباشه یعنی یک pc جدا که در حالت domain نباشه و سرور sql باشه حالا کلاینت در حالت domain باشن و از طریق ip بخواهند به این dc وصل بشن باز همین مشکل وجود داره با توضیحات که این دوست عزیز داده باز هم با این حالت هنوز همه مشکل وجود داره

Esmail Solhkhah
یک شنبه 13 شهریور 1390, 23:36 عصر
حالا اگر dc سرور در حالت domain نباشه یعنی یک pc جدا که در حالت domain نباشه و سرور sql باشه حالا کلاینت در حالت domain باشن

متوجه نمیشم یعنی چی که کلاینت در حالت domain باشه ، کلاینت که نمیشه در حالت domain باشه این سروره که میتونه Domain Controller باشه

اگه منظورتون اینه که شبکتون WorkGroup هست و دارید از Windows Authentication استفاده میکنید این خطا طبیعیه ، در این حالت باید از Mix Mode استفاده کنید

با توجه به کانکشن استرینگی که نوشتید و SSPI ذکر کردید یعنی دارید از Windows Authentication استفاده میکنید ، دوست عزیز گفتم که در این حالت User و Pass لازم نیس

شما اول SQL SERVER رو به Mix Mode ست کنید بعد تو کانکشن استرینگ SSPI رو بردارید


Password=123456789;Persist Security Info=True;User ID=sa;Initial Catalog=Archive;Data Source=192.168.1.10

یه نمونه کانکشن استرینگ برا این کار شما

ضمنا دقت کنید که اگه SQL SERVER رو با اینستنسی بغیر از Default نصب کردید بعد از آدرس IP نام اینستنس رو هم قید کنید

مثل این یکی

Password=123456789;Persist Security Info=True;User ID=sa;Initial Catalog=Archive;Data Source=192.168.1.10\SQLEXPRESS

یادتون نره که پورت دیفالت SQL رو تو لیست Exception های فایروال سرور هم بذارید و الا اجازه ارتباط کلاینت با SQL رو سرور رو نمیده

موفق باشید.

parsester
دوشنبه 14 شهریور 1390, 17:07 عصر
خب من هم همین مشکل رو دارم که نرم افزارم رو روی یک سیستم دیگری روی شبکه نصب کردم و بانک روی سیستم دیگه ای روی شبکه است که با وایرلس به شبکه متصله اما نرم افزار نمیتونه بانکم رو پیدا کنه بانک هم حالت میکس مود هست؟
پورت دیفالت SQL رو از کجا بدست بیارم؟
در ضمن فایروال رو هم خاموش کردم...

Esmail Solhkhah
دوشنبه 14 شهریور 1390, 17:15 عصر
خب من هم همین مشکل رو دارم که نرم افزارم رو روی یک سیستم دیگری روی شبکه نصب کردم و بانک روی سیستم دیگه ای روی شبکه است که با وایرلس به شبکه متصله اما نرم افزار نمیتونه بانکم رو پیدا کنه بانک هم حالت میکس مود هست؟
پورت دیفالت SQL رو از کجا بدست بیارم؟
در ضمن فایروال رو هم خاموش کردم...

دوست عزیز فرقی نمیکنه که شبکه شما آداپترش وایرلس باشه یا کارت شبکه یا ...

مهم اینه که شما بتونید IP سروری که SQL SERVER روش نصبه رو Ping کنید

ضمنا اگه فایروال سرور خاموشه دیگه نیازی به Exception کردن پورت دیفالت نیس

پورت دیفالت معمولا 1433 هست مگه اینکه از پورت دیگه ای استفاده کنید یا Dynamic کنید

یادتون نره که TCP/IP رو رو SQL SERVER فعال کنید و اجازه ریموت کانکشن هم بدید

اگر هم دارید از کاربر sa به عنوان کاربر استفاده میکنید دقت کنید که این کاربر از SQL SERVER های بالای 2000 بصورت پیش فرض غیر فعاله

و باید فعالش کنید.

یه فایل UDL بسازید (تو کلاینت) و ببینید میتونید باهاش به SQL SERVER وصل بشید

linux
دوشنبه 14 شهریور 1390, 22:42 عصر
راه حل درستیکه در پروژه های بزرگ پیشنهاد می شود به این صورت هست که شما حداقل یک سرور دیتابیس و حداقل یک سرور آپلیکشن دارید و کلاینت ها از طریق وبسرویس هایی که بر روی سرور اپلیکشن ارائه می شوند کار می کنند.

parsester
سه شنبه 15 شهریور 1390, 16:09 عصر
خب مشکل من همینه که تا به حال به بانکم از سیستم دیگه ای متصل نشدم،اما حالا توی شرکتی که کار میکنم میخوام بانک رو روی لپ تابی که باهاش کار میکنم بذارم و نرم افزار رو روی سه تا سیستم دیگه نصب کنم و هر ثبت اطلاعات و دریافت اطلاعاتی از روی همون بانک باشه...این کارو کردم اما وقتی روی اون سیستم برای امتحان میخوام یک کانکشن اد کنم از طریق سرور اکسپلورر وقتی آیپی لب تاب یا اسم سیستمش رو میزنم و بعد تست کانکشن رو میزنم حدود 40 ثانیه معطل میکنه و بعد پیغامی میده که توش میگه احتمالا ریموت کانکشن غیر فعاله این در حالیه که میتونم از طریق ریموت دسکتاپ به لب تاب متصل بشم؟؟؟خیلی برام مهمه اما نمیشه؟؟؟
در ضمن این که گفتید نمیدونم چطور TCP/IP رو در SQL Server فعال کنم و اجازه ریموت کانکشن بدم؟
چطور یک UDL بسازم تو کلاینت و امتحان کنم؟
ببخشید البته من تا بحال توی شبکه اینکارو نکردم...

Esmail Solhkhah
سه شنبه 15 شهریور 1390, 18:22 عصر
خب مشکل من همینه که تا به حال به بانکم از سیستم دیگه ای متصل نشدم،اما حالا توی شرکتی که کار میکنم میخوام بانک رو روی لپ تابی که باهاش کار میکنم بذارم و نرم افزار رو روی سه تا سیستم دیگه نصب کنم

شما اول باید این سیستمها رو شبکه کنید

Workgroup برا این کار بهتره

Authentication اس کیو ال رو بذارید Sql Server Authentication

یا کاربر تعریف کنید یا از کاربر Sa استفاده کنید

دقت کنید Sa در SQL Server از ورژن 2000 به بالا پیش فرض غیر فعاله(جهت امنیت بیشتر) فعالش کنید و رمزش رو ست کنید.

بعد باید مطمئن بشید که میتونید کامپیوتری که SQL SERVER روش نصبه رو Ping کنید

برای تنظیمات TCP/IP و ریموت کانکشن این لینک رو ببینید
http://barnamenevis.org/showthread.php?250354-%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AA%D8%AD%D8%AA-%D8%B4%D8%A8%DA%A9%D9%87-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-connection-string-%28%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-%D8%AF%D8%B1-7%29


چطور یک UDL بسازم تو کلاینت و امتحان کنم؟

یه فایل txt معمولی بسازید و پسوندش رو بذارید UDL

روش دو بار کلیک کنید ، یه ویزاردی ظاهر میشه که شبیه همونیه که تو Visual Studio باهاش کانکشن میسازید

باید بتونید با این ویزارد به دیتابیس مورد نظرتون رو سرور کانکت بشید و الا برنامتون هم نمیتونه کانکت بشه

موفق باشید.

quantomquery
چهارشنبه 16 شهریور 1390, 16:56 عصر
دوستان با تشکر از راهنمایی شما
حالا اگر dc سرور در حالت domain نباشه یعنی یک pc جدا که در حالت domain نباشه و سرور sql باشه حالا کلاینت در حالت domain باشن و از طریق ip بخواهند به این dc وصل بشن باز همین مشکل وجود داره با توضیحات که این دوست عزیز داده باز هم با این حالت هنوز همه مشکل وجود داره

سلام
دوست عزیز ناراحت نشید ولی برای این کار (تشکر ) یه دکمه گذاشتن که این مفهوم رو زیباتر می رسونه
ممنون

parsester
پنج شنبه 17 شهریور 1390, 12:06 عصر
برای تنظیمات TCP/IP و ریموت کانکشن این لینک رو ببینید
http://barnamenevis.org/showthread.php?250354-%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AA%D8%AD%D8%AA-%D8%B4%D8%A8%DA%A9%D9%87-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-connection-string-%28%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-%D8%AF%D8%B1-7%29

موفق باشید.
من دقیقا طبق اون آموزش عمل کردم اما در پنجره SQL Server Configuration Manger در Protocols For MSSQLSERVER و در TCP\IP در تگ IP Addresses در قسمت IP ALL زمانی که طبق آموزش قسمت TCP Dynamic Ports 1433 رو وارد میکنم و سیستم رو ری استارت میکنم و دوباره اون رو چک میکنم اون عوض میشه و هر بار یک شماره میشه مثلا 1030؟
چکار باید بکنم؟

Esmail Solhkhah
پنج شنبه 17 شهریور 1390, 12:42 عصر
پورت 1433 پورت دیفالت SQL SERVER هست برا سرویس دهی تحت پروتکل TCP/IP

شما دوحالت میتونید از پورت استفاده کنید

یا باید اونو Static تعریف کنید که در اینصورت پورت ثابت هست و میتونید اون پورت رو بزارید تو لیست Exception های Firewall

یا باید از پورت Dynamic استفاده کنید که در اینصورت شماره پورت ثابت نیست و سرویس SQL SERVER در زمان Start یه پورتی رو از سیستم عامل درخواست میکنه

که طبیعتا احتمال داره هر بار شما یه پورت دیگه دریافت کنید

در این حالت نمیتونید شماره پورت رو بذارید تو لیست Exception ها چون در حال تغییره

یه راهکار اینه که از پورت ثابت استفاده کنید

در اینصورت TCP Dynamic Ports رو بیخیال بشید و تو قسمت TCP Port شماره پورت مورد نظر رو بنویسید مثلا 1433

یه راهکار دیگه اینکه از پورت Dynamic استفاده کنید و سرویس SQLSERVER رو بذارید تو لیست Exception ها

در هر دوصورت اگه شبکتون به اینترنت وصله مسائل امنیتی رو در نظر بگیرید

موفق باشید.