PDA

View Full Version : اجرا برنامه بدون تغییر رشته اتصال در کامپیوتری دیگر



r_khan
جمعه 09 مرداد 1388, 16:35 عصر
سلام من یک برنامه بانک اطلاعاتی(sql sever) نوشتم رشته اتصال برنامه مربوط به کامپیوتر خودم هست حالا من میخواهم این برنامه را در کامپیوتر دیگری اجرا کنم اما باید رشته اتصال تغییر کند چکار کنم بدون دستکاری در رشته اتصال برنامه اجرا بشه؟؟

aligilani1986
جمعه 09 مرداد 1388, 17:16 عصر
سلام من یک برنامه بانک اطلاعاتی(sql sever) نوشتم رشته اتصال برنامه مربوط به کامپیوتر خودم هست حالا من میخواهم این برنامه را در کامپیوتر دیگری اجرا کنم اما باید رشته اتصال تغییر کند چکار کنم بدون دستکاری در رشته اتصال برنامه اجرا بشه؟؟


سلام.

اگه دیتا سورس توی cn رو به نقطه ( . ) تغییر بدی نیاز نیست تغییر دیگه ای بدی جز اینکه زمان نصب sql server توی کامپیوتر دیگه باید default instance رو هنگام نصب انتخاب کرده باشی.

بعبارت دیگه فقط 1 sql server نصب کن و نام سرور اون باید نام کامپیوتری باشه که sql روی اون نصب کردی.

r_khan
جمعه 09 مرداد 1388, 23:02 عصر
اگه دیتا سورس توی cn رو به نقطه ( . ) تغییر بدی
با سلام از این جوابتون سر در نمیارم من از بانک اطلاعاتی backup میگیرم در بانک اطلاعاتی کامپیوتری دیگر restore میکنم sql server در اون کامپیوتر نصب است نیازی به نصب نداره

mn_zandy63
شنبه 10 مرداد 1388, 02:32 صبح
ببین اگه اسم سرور رو به جای اسم کامپیوتر . (نقطه) یا local یا (local) بذاری٬ معنیش اینه که همون کامپیوتری که الان داره برنامه روش اجرا میشه.
به این وسیله تا حدودی میتونی نیاز به تغییر کانکشن رو حل کنی.
علت اینکه میگم تا حدودی به خاطر اینه که٬ وقتی که SQL رو نصب میکنی اگه دقت کرده باشی میتونی یک اسم بهش بدی اصطلاحا Instance Name یا میتونی روی default instantce نصبش کنی.
اگه روی default نصب شده باشه٬ با اسم کامپیوترت به تنهایی و یا . و یا‍ local و یا (local) میتونی بهش دسترسی پیدا کنی. اما اگه نام بهش بدی اونوقت باید برای اتصال به SQL با یک \ اسم اینستنس رو هم بدی٬ مثلا local\Instance name به جای local همونطور که گفتم نقطه هم میتونی بذاری یا اسم کامپیوترت.
حالا نکته اینجاست که اگه از . (نقطه) یا local استفاده کنی٬ میشه همون کامپیوتر که برنامه روش اجرا شده و بنابراین نیاز به تغییر کانکشن روی هر کامپیوتر نیست٬ ولی باید حتما اینستنس یکسان باشه٬ یعنی اگه SQL روی کامپیوتر خودت روی default نصب شده باید روی کامپیوتر مقصدت هم روی default نصب شده باشه و اگه نام داره باید هم نام باشند.
اما بهر حال بهتره تنظیماتی داشته باشی که٬ Connection string رو روی کامپیوتر مقصد از کاربر بگیری.

r_khan
شنبه 10 مرداد 1388, 14:38 عصر
نمیشه با کد نویسی این رشته اتصال کامپیوتر مقصد را بدست بیاورد بدون اینکه از کاربر بگیرد

davoodrm666_666
شنبه 10 مرداد 1388, 15:14 عصر
اگه از . یا local استفاده کنی برنامه شما دیگه به صورت local اجرا میشه یعنی فقط روی همون کامپیوتری که sql نصب شده برنامه ت بالا می یاد و قابلیت تحت شبکه شو از دست میده بهتره که یک فایل ساختار درست کنی و اطلاعات کانکشنت رو از اون بخونی و برای امنیت بیشتر هم اطلاعات داخل فایل رو هم کد کن.

mn_zandy63
شنبه 10 مرداد 1388, 15:32 عصر
اگه از . یا local استفاده کنی برنامه شما دیگه به صورت local اجرا میشه یعنی فقط روی همون کامپیوتری که sql نصب شده برنامه ت بالا می یاد

بهتره که یک فایل ساختار درست کنی و اطلاعات کانکشنت رو از اون بخونی و برای امنیت بیشتر هم اطلاعات داخل فایل رو هم کد کن.
حق با دوستمونه٬ کاملاْ باهاش موافقم. در عین اینکه پیشنهاد میکنم فرمی رو هم برای گرفتن این تنظیمات از کاربرت در نظر بگیری.


نمیشه با کد نویسی این رشته اتصال کامپیوتر مقصد را بدست بیاورد بدون اینکه از کاربر بگیرد
فکر نمیکنم به راحتی امکان پذیر باشه٬ مگه اینکه حدس بزنه :چشمک:
البته به این خاطر گفتم به راحتی٬ که شاید بشه مثلا با چک کردن پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست سرور رو پیدا کنی. که در هر صورت باز username و password و اسم instance رو باید یا از کاربر بگیری یا ثابت باشه همیشه.
والبته راه حل های دیگه ای که در این لحظه ممکنه به ذهن من نرسیده باشه.
به هر حال بهترین راه حل اینه که از کاربر بگیری همه اطلاعات رو.

aligilani1986
یک شنبه 11 مرداد 1388, 00:03 صبح
من معمولا از یک فایل برای کانکشن استرینگ استفاده میکنم. این فایل رو میخونم و با استفاده از اون یک کانکشن درست میکنم.

r_khan
یک شنبه 11 مرداد 1388, 15:30 عصر
من معمولا از یک فایل برای کانکشن استرینگ استفاده میکنم. این فایل رو میخونم و با استفاده از اون یک کانکشن درست میکنم.


ممنون از دوستان عزیز جطور این فایل در داخل برنامم بخونم در ضمن ذر مورد خواندن IP کامپیوتر یامواردی که دوستان ذکر کردن چطور این کار ممکن است اگر بیشتر راهنمایی کنید ممنون میشم

aligilani1986
دوشنبه 12 مرداد 1388, 11:32 صبح
سلام.

من از این تابع برای خوندن فایل استفاده میکنم.

البته میشه حرفه ای هم نوشت ... اما این کاره منو راه میندازه.




public static string get_f()
{

try
{
string task2 = "", dir = "";
dir = Application.StartupPath.ToString() + "\\init.prg";

if (File.Exists(dir))
{

foreach (string task in File.ReadAllLines(dir))
{
task2 = task;
break;
}
}
return task2;
}

catch (Exception ex)
{
return "";
}
}



بعد از این کد برای کانکشن استفاده میکنم.




public static SqlConnection cnn = new SqlConnection(get_str.get_f());
public static SqlConnection con()
{

//cnn.ConnectionString = ;
//cnn = new SqlConnection(get_str.get_f());
if (cnn.State == ConnectionState.Closed)
{
cnn.Open();
}
return cnn;
}

r_khan
دوشنبه 12 مرداد 1388, 15:05 عصر
حق با دوستمونه٬ کاملاْ باهاش موافقم. در عین اینکه پیشنهاد میکنم فرمی رو هم برای گرفتن این تنظیمات از کاربرت در نظر بگیری.


فکر نمیکنم به راحتی امکان پذیر باشه٬ مگه اینکه حدس بزنه :چشمک:
البته به این خاطر گفتم به راحتی٬ که شاید بشه مثلا با چک کردن پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست سرور رو پیدا کنی. که در هر صورت باز username و password و اسم instance رو باید یا از کاربر بگیری یا ثابت باشه همیشه.
والبته راه حل های دیگه ای که در این لحظه ممکنه به ذهن من نرسیده باشه.
به هر حال بهترین راه حل اینه که از کاربر بگیری همه اطلاعات رو.




چطور میشه پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست را پیدا کرد و username و password و اسم instance که از کار بر میگیرم رادر رشته اتصالم استفاده کنم یعنی username و password و اسم instance که از کاربر گرفتم در فایلی که رشته اتصال هست بریزم واز ان استفاده کنم؟؟

mn_zandy63
دوشنبه 12 مرداد 1388, 19:46 عصر
چطور میشه پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست را پیدا کرد و username و password و اسم instance که از کار بر میگیرم رادر رشته اتصالم استفاده کنم یعنی username و password و اسم instance که از کاربر گرفتم در فایلی که رشته اتصال هست بریزم واز ان استفاده کنم؟؟

خب در مورد جستجو توی شبکه من تا حالا انجام ندادم ولی با توجه به اینکه SQL Server پورت خاصی رو از کامپیوتری که روش در حال اجراست باز میکنه قاعدتا با جستجو توی مثلاْ IP های حوزه سیستم خودت قاعدتا باید بتونی سیستمی که این پورتش بازه رو پیدا کنی. بماند!
در مورد گرفتن اطلاعات از کاربر٬ ببین خودت وقتی میخوای توی Visual Studio در قسمت Server Explorer یک Connection اضافه کنی فرمی برات باز میشه٬ همون فرم رو اگه به کاربرت نشون بدی اطلاعات رو بگیری٬ کامله دیگه. می تونی Connection String رو که از کاربر گرفتی هم توی یک فایل ذخیره کنی که برای دفعات بعد از اون استفاده کنی.
واضحه؟
دوستان اگه راه حل بهتری دارند لطفاْ توضیح بدهند.

r_khan
سه شنبه 13 مرداد 1388, 00:04 صبح
دوستان اگه راه حل بهتری دارند لطفاْ توضیح بدهند ممنون میشم اگه دوستان بگویند
چطور میشه پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست را پیدا کرد

r_khan
سه شنبه 13 مرداد 1388, 13:12 عصر
من منتظر پاسخ دوستان هستم

r_khan
چهارشنبه 14 مرداد 1388, 15:56 عصر
من هنوز پاسخم را نگرفتم


چطور میشه پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست را پیدا کرد

mn_zandy63
پنج شنبه 15 مرداد 1388, 01:33 صبح
برادر من بابا جون یه جستجو هم بکنی بد نیستا :چشمک:
این دو تا لینک رو یه سر بزن ضرر نداره
با SQL DMO امکان پذیره مثل اینکه. من نمیدونستم.

http://www.sqlteam.com/article/finding-sql-servers-running-on-a-network
http://www.sqldbatips.com/showarticle.asp?ID=45

موفق باشی