PDA

View Full Version : ارتباط به sql server از طریق اینترنت



M * M * A
پنج شنبه 18 مرداد 1386, 09:14 صبح
با سلام
چه جوری میشه به sql server یک کامپیوتر دیگه که در شهر دیگری است از طریق اینترنت دسترسی داشته باشی؟
آیا با این connection میشه؟


using System.Data.SqlClient;

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Network Library=DBMSSOCN;" +
"Data Source=xxx.xxx.xxx.xxx,1433;" +
"Initial Catalog=DataBaseName;" +
"User id=UserName;" +
"Password=Secret;";
conn.Open();

رها
پنج شنبه 18 مرداد 1386, 09:31 صبح
در صورتی این عمل امکان پذیره که IP کامپوتری که می خواهید بهش connect بشید Valid باشه که معمولاً در اختیار کاربران خانگی یا شرکتی قرار نداره.
یه راه دیگه استفاده از نرم افزارهایی مثل pc anywhere می باشد که از طریق مودم به یه کامپیوتر دیگه وصل می شه و شما می تونید SQL Server اون رو اجرا و مدیریت کنید

mehdi.mousavi
پنج شنبه 18 مرداد 1386, 09:39 صبح
با سلام
چه جوری میشه به sql server یک کامپیوتر دیگه که در شهر دیگری است از طریق اینترنت دسترسی داشته باشی؟
آیا با این connection میشه؟



سلام.
لطفا این پست رو مطالعه کنید. (http://barnamenevis.org/forum/showpost.php?p=370740&postcount=10)

M * M * A
پنج شنبه 18 مرداد 1386, 10:59 صبح
بنا بر این من باید چه کار کنم؟

mehdi.mousavi
جمعه 19 مرداد 1386, 01:13 صبح
بنا بر این من باید چه کار کنم؟

سلام.

بسیار خوب. اگر کامپیوتری که SQL Server بر روی اون نصبه به اینترنت متصل باشه، باید یه Public IP Address بهش اختصاص بدین. یعنی یک Domain Name باید ثبت کنید و سپس یه Static IP بگیرید. بعد در تعاریف Domain بگید که Request ها به چه IP ای باید منتقل بشن. به این ترتیب کافیست تا هنگام استفاده، IP Address اون کامپیوتر رو در Connection String خودتون قرار بدین و تمام.

اما اگر اون کامپیوتر به اینترنت وصل نیست، میتونید با Config کردن سرویس RAS روی اون اقدام به راه اندازی سروری کنید که بصورت Remote بشه به اون متصل شد. به این ترتیب شما از Private IP Address ها استفاده خواهید کرد، درست مثل اینکه کامپیوتر شما و سرور هر دو در یک LAN قرار گرفته باشن. البته دقت کنید که Client و Server هر دو باید TCP/IP Protocol رو Support کنن و اگر از SQL Server 2005 استفاده می کنید، باید TCP/IP اونو که بصورت پیش فرض Disable هست، enable کنید. (در ورژنهای قبلی پیش فرض، Enable بود).

باز هم اگر سوالی بود، دریغ نکنید.

اَرژنگ
جمعه 19 مرداد 1386, 04:29 صبح
این روش اتصال کردن به داتابیس روش درستی نیست و در این پست :
http://barnamenevis.org/forum/showthread.php?t=74601
این موضوع بحث شد.

coldsummer
جمعه 19 مرداد 1386, 07:44 صبح
سلام دوستان
من با C#.net 2005 و sql server 2000 کار می کنم سوال من در رابطه با مقدار IP در connection String هست که در مورد سیستم local 127.0.0.1 هست ولی وقتی این IP رو ست می کنم با خطا مواجه می شم اگه کسی حل این مشکل رو می دونه لطف کنه به من هم بگه

mehdi.mousavi
جمعه 19 مرداد 1386, 10:45 صبح
این روش اتصال کردن به داتابیس روش درستی نیست و در این پست :
http://barnamenevis.org/forum/showthread.php?t=74601
این موضوع بحث شد.


سلام.
با این موضوع 100% موافقم، اما تجربه نشون داده اکثریت مردم حاضر نیستن برنامه خودشون رو برای استفاده از تکنولوژی یا متودولوژی جدیدی تغییر بدن و فقط بخش بسیار اندکی هستن که مایلند کار رو صحیح انجام بدن (بخصوص در اواسط یا انتهای یه پروژه). بهمین دلیل بود که من وارد بحث Application Layering نشدم.

اما حالا که وارد این بحث شدیم، اجازه بدین روش دیگه ای رو هم به M * M * A پیشنهاد کنم. در SQL Server 2005 از XML Web Services (http://technet.microsoft.com/en-us/library/ms191274.aspx) بصورت Native پشتیبانی میشه. معنای این حرف اینه که شما می تونید فرامین SQL رو، روی HTTP و بصورت SOAP به Database Engine ارسال کنید. به این ترتیب شما می تونید در مرحله اول (و برای سرعت بخشیدن به کار)، از اون استفاده کنید تا دیگه دسترسی مستقیم به بانک نداشته باشید. اینطوری نیازی به باز کردن پورتهای خاص روی Firewall ها هم نخواهید داشت. در مرحله بعدی، تغییراتی رو که جناب آرژنگ متذکر شدن، می تونید ساده تر اعمال کنید.

mehdi.mousavi
جمعه 19 مرداد 1386, 14:13 عصر
سلام دوستان
من با C#.net 2005 و sql server 2000 کار می کنم سوال من در رابطه با مقدار IP در connection String هست که در مورد سیستم local 127.0.0.1 هست ولی وقتی این IP رو ست می کنم با خطا مواجه می شم اگه کسی حل این مشکل رو می دونه لطف کنه به من هم بگه


سلام.
127.0.0.1 آدرس Loopback سیستم هست و با آدرسهای دیگه فرقی نداره. لطفا بفرمایید با چه خطایی روبرو میشید تا راه حل رو خدمتتون عرض کنم.

coldsummer
شنبه 20 مرداد 1386, 01:04 صبح
عنوان خطا این هست
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.
ممنون از لطفتون

hdv212
شنبه 20 مرداد 1386, 01:34 صبح
coldsummer عزیز، sqlserver شما باید برای پاسخگویی به request هایی که از طرف سایر کامپیوتر های تحت شبکه میاد پیکر بندی بشه، برای اینکار روی سرورتون در sqlserver راست کلیک کنید و گزینه ی properties رو انتخاب کنید و گزینه ی allow remote connections (یه چیزی تو همین مایه ها، چون من خودم از 2005 استفاده میکنم، خیلی وقته از 2000 استفاده نمیکنم)
رو تیک دار کنید. البته یادتون باشه سرویس tcp/ip مربوط به sql تون هم باید start شده باشه.

coldsummer
یک شنبه 28 مرداد 1386, 00:39 صبح
من این کاررو کردم حتی پورت مربوطه رو هم به پروتکل تی سی پی آی پی ربط دادم ولی باز هم مشکل دارم