سلام من یک برنامه بانک اطلاعاتی(sql sever) نوشتم رشته اتصال برنامه مربوط به کامپیوتر خودم هست حالا من میخواهم این برنامه را در کامپیوتر دیگری اجرا کنم اما باید رشته اتصال تغییر کند چکار کنم بدون دستکاری در رشته اتصال برنامه اجرا بشه؟؟
سلام من یک برنامه بانک اطلاعاتی(sql sever) نوشتم رشته اتصال برنامه مربوط به کامپیوتر خودم هست حالا من میخواهم این برنامه را در کامپیوتر دیگری اجرا کنم اما باید رشته اتصال تغییر کند چکار کنم بدون دستکاری در رشته اتصال برنامه اجرا بشه؟؟
سلام.
اگه دیتا سورس توی cn رو به نقطه ( . ) تغییر بدی نیاز نیست تغییر دیگه ای بدی جز اینکه زمان نصب sql server توی کامپیوتر دیگه باید default instance رو هنگام نصب انتخاب کرده باشی.
بعبارت دیگه فقط 1 sql server نصب کن و نام سرور اون باید نام کامپیوتری باشه که sql روی اون نصب کردی.
اگه دیتا سورس توی cn رو به نقطه ( . ) تغییر بدی
با سلام از این جوابتون سر در نمیارم من از بانک اطلاعاتی backup میگیرم در بانک اطلاعاتی کامپیوتری دیگر restore میکنم sql server در اون کامپیوتر نصب است نیازی به نصب نداره
ببین اگه اسم سرور رو به جای اسم کامپیوتر . (نقطه) یا local یا (local) بذاری٬ معنیش اینه که همون کامپیوتری که الان داره برنامه روش اجرا میشه.
به این وسیله تا حدودی میتونی نیاز به تغییر کانکشن رو حل کنی.
علت اینکه میگم تا حدودی به خاطر اینه که٬ وقتی که SQL رو نصب میکنی اگه دقت کرده باشی میتونی یک اسم بهش بدی اصطلاحا Instance Name یا میتونی روی default instantce نصبش کنی.
اگه روی default نصب شده باشه٬ با اسم کامپیوترت به تنهایی و یا . و یا local و یا (local) میتونی بهش دسترسی پیدا کنی. اما اگه نام بهش بدی اونوقت باید برای اتصال به SQL با یک \ اسم اینستنس رو هم بدی٬ مثلا local\Instance name به جای local همونطور که گفتم نقطه هم میتونی بذاری یا اسم کامپیوترت.
حالا نکته اینجاست که اگه از . (نقطه) یا local استفاده کنی٬ میشه همون کامپیوتر که برنامه روش اجرا شده و بنابراین نیاز به تغییر کانکشن روی هر کامپیوتر نیست٬ ولی باید حتما اینستنس یکسان باشه٬ یعنی اگه SQL روی کامپیوتر خودت روی default نصب شده باید روی کامپیوتر مقصدت هم روی default نصب شده باشه و اگه نام داره باید هم نام باشند.
اما بهر حال بهتره تنظیماتی داشته باشی که٬ Connection string رو روی کامپیوتر مقصد از کاربر بگیری.
نمیشه با کد نویسی این رشته اتصال کامپیوتر مقصد را بدست بیاورد بدون اینکه از کاربر بگیرد
اگه از . یا local استفاده کنی برنامه شما دیگه به صورت local اجرا میشه یعنی فقط روی همون کامپیوتری که sql نصب شده برنامه ت بالا می یاد و قابلیت تحت شبکه شو از دست میده بهتره که یک فایل ساختار درست کنی و اطلاعات کانکشنت رو از اون بخونی و برای امنیت بیشتر هم اطلاعات داخل فایل رو هم کد کن.
اگه از . یا local استفاده کنی برنامه شما دیگه به صورت local اجرا میشه یعنی فقط روی همون کامپیوتری که sql نصب شده برنامه ت بالا می یادحق با دوستمونه٬ کاملاْ باهاش موافقم. در عین اینکه پیشنهاد میکنم فرمی رو هم برای گرفتن این تنظیمات از کاربرت در نظر بگیری.بهتره که یک فایل ساختار درست کنی و اطلاعات کانکشنت رو از اون بخونی و برای امنیت بیشتر هم اطلاعات داخل فایل رو هم کد کن.
فکر نمیکنم به راحتی امکان پذیر باشه٬ مگه اینکه حدس بزنه
البته به این خاطر گفتم به راحتی٬ که شاید بشه مثلا با چک کردن پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست سرور رو پیدا کنی. که در هر صورت باز username و password و اسم instance رو باید یا از کاربر بگیری یا ثابت باشه همیشه.
والبته راه حل های دیگه ای که در این لحظه ممکنه به ذهن من نرسیده باشه.
به هر حال بهترین راه حل اینه که از کاربر بگیری همه اطلاعات رو.
آخرین ویرایش به وسیله mn_zandy63 : شنبه 10 مرداد 1388 در 15:54 عصر
من معمولا از یک فایل برای کانکشن استرینگ استفاده میکنم. این فایل رو میخونم و با استفاده از اون یک کانکشن درست میکنم.
سلام.
من از این تابع برای خوندن فایل استفاده میکنم.
البته میشه حرفه ای هم نوشت ... اما این کاره منو راه میندازه.
بعد از این کد برای کانکشن استفاده میکنم.
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;
}
چطور میشه پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست را پیدا کرد و username و password و اسم instance که از کار بر میگیرم رادر رشته اتصالم استفاده کنم یعنی username و password و اسم instance که از کاربر گرفتم در فایلی که رشته اتصال هست بریزم واز ان استفاده کنم؟؟
خب در مورد جستجو توی شبکه من تا حالا انجام ندادم ولی با توجه به اینکه SQL Server پورت خاصی رو از کامپیوتری که روش در حال اجراست باز میکنه قاعدتا با جستجو توی مثلاْ IP های حوزه سیستم خودت قاعدتا باید بتونی سیستمی که این پورتش بازه رو پیدا کنی. بماند!
در مورد گرفتن اطلاعات از کاربر٬ ببین خودت وقتی میخوای توی Visual Studio در قسمت Server Explorer یک Connection اضافه کنی فرمی برات باز میشه٬ همون فرم رو اگه به کاربرت نشون بدی اطلاعات رو بگیری٬ کامله دیگه. می تونی Connection String رو که از کاربر گرفتی هم توی یک فایل ذخیره کنی که برای دفعات بعد از اون استفاده کنی.
واضحه؟
دوستان اگه راه حل بهتری دارند لطفاْ توضیح بدهند.
دوستان اگه راه حل بهتری دارند لطفاْ توضیح بدهند ممنون میشم اگه دوستان بگویند
چطور میشه پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست را پیدا کرد
من منتظر پاسخ دوستان هستم
من هنوز پاسخم را نگرفتم
چطور میشه پورت SQL سرور توی شبکه و جستجو تو رنج IP سیستمی که نرم افزار در حال اجراست را پیدا کرد
برادر من بابا جون یه جستجو هم بکنی بد نیستا
این دو تا لینک رو یه سر بزن ضرر نداره
با SQL DMO امکان پذیره مثل اینکه. من نمیدونستم.
http://www.sqlteam.com/article/findi...g-on-a-network
http://www.sqldbatips.com/showarticle.asp?ID=45
موفق باشی