سلام.
گفتن جمله "برنامه ام در LAN کار میکنه"، دقیق نیست. بهتر این بود که می گفتید "برنامه ام در یه LAN، (مثلا) TCP/IP کار میکنه". اگر پروتکل LAN شما TCP/IP هستش، اونوقت می تونید از برنامه اتون در سطح اینترنت هم استفاده کنید، چون در واقع اینترانت شما هم روی TCP/IP سواره. تنها تفاوت در IP Address هایی هستش که به Server و Client ها تخصیص داده شده. ما دو جور IP Address داریم: private و public.
Private IP Address ها، آدرسهایی هستن که در سطح LAN شما معنا دارن و بصورت عمومی در اختیار همگان نیستن.
این آدرسها به چهار سطح زیر تقسیم میشن:
10.0.0.0 - 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255
و 169.254/16 که طبق استانداردها برای محیطهایی در نظر گرفته شدن که به DHCP Sever دسترسی ندارن. در نتیجه، الان اگه شما دونه دونه کامپیوترهاتون رو در شبکه نگاه کنید، یکی از 4 آدرس زیر رو بخودشون اختصاص دادن. اینها همگی آدرسهایی هستن، که کسی از طریق INTERNET بهشون دسترسی نداره. بقیه آدرسها، Public IP Address هستن. یعنی در اختیار عموم قرار دارن و برای به اشتراک گذاشتن مورد استفاده قرار میگیرن. مثلا 64.4.32.7 آدرس hotmail هستش.
برنامه شما هم در صورتیکه روی پروتکل TCP/IP کار میکنه، نیاز به تغییر آنچنانی نداره تا بشه ازون در سطح internet هم استفاده کرد. برای اینکار، ابتدا باید یه public address داشته باشید، اونهم از نوع static که تغییر نکنه. بعد باید پورتهای مناسب رو برای SQL Server و دیگر ابزارهایی که احیانا استفاده کردین بازکنید، تا دسترسی فراهم بشه. البته اینها در حد تئوری هستش، چون وقتی به عمل میرسه، اینقدر مشکلات امنیتی برای نرم افزارتون ایجاد میشه که از خیرش میگذرین.
بعنوان یه مثال خیلی خیلی جزیی، وقتی SQL Server رو روی سرور قرار میدین و اونو رو اینترنت میذارین، باید حواستون باشه که password مربوط به کاربر sa رو حتما set کنید. چون معمولا دیدم که افراد اینکارو موقع نصب انجام نمیدن و ...
اما از دید برنامه نویسی... وقتی شما ConnectionString ای درست میکنید و نام کامپیوترتون رو بعنوان Server در اون قرار میدین، شما به برنامه میگید که به کدوم IP Address باید برای دستیابی به SQL Server وصل بشه. جای نام کامپیوتر، میتونید از IP کامپیوترتون هم استفاده کنید.
مثلا جای
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks;Data Source=myComputer
میتونم بزنم
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks;Data Source=192.168.0.1
یعنی دارم Private IP Address سیستمم رو میذارم. حالا تو اون حالت که شما SQL Server رو روی اینترنت قرار میدین، باید از IP اون کامپیوتر استفاده کنید. مثلا اگر SQL Server روی hotmail نصب باشه، از ConnectionString زیر میتونید استفاده کنید تا بهش متصل بشید:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks;Data Source=64.4.32.7
بقیه کارها در سطح ODBC Driver ها، OLEDB Data Provider ها و ... انجام میشه و شما هیچ تفاوتی بین اجرای برنامه روی LAN TCP/IP و Internet نمی بینید.