PDA

View Full Version : سوال: مشکل کانکشن , و خطا The underlying provider failed on Open



Ilosgroup
جمعه 06 بهمن 1396, 22:57 عصر
برابر سوالات قبلی که در قسمت کانکشن استرینگ پویا با مشکل عدم ارتباط با پایگاه داده داشتم کمی دستکاری کردم این بار با خطا جدید The underlying provider failed on Open' (https://stackoverflow.com/questions/2475008/mssql-error-the-underlying-provider-failed-on-open)روبرو شدم .
تصویر خطا فعلی:
http://s9.picofile.com/file/8317758618/8888.jpg
---------------------------------------------------------------------
* احتمالا با مشکل زیر نیز مواجه می شوم پیشنهاد حل این مشکل نیز چیه:
در سوالات قبلی مطرح کردم که در بخش پایانی پروژه اتوماسیون اداری که مربوط به کد نویسی کانگشن استرینگ پویا هست با توجه به اینکه کد نویسی را دقیق مطابق اموزش نوشتم ولی ارتباط با پایگاه داده برقرار نمیشه- یک بار entity رو مجدد نصب کردم و حتی اپدیت کردم ولی مشکل حل نشد- یه خطا میده که لینکش پائین هست یه نگاه بکنید؟
لینک خطا:
http://s9.picofile.com/file/8317718526/55.jpg
لینک سایر کد های مرتبط با کد نویسی بخش کانکشن استرینگ پویا:
http://s9.picofile.com/file/8317712176/22.jpg
http://s8.picofile.com/file/8317712234/11.jpg
http://s8.picofile.com/file/8317712076/44.jpg
http://s8.picofile.com/file/8317712126/33.jpg
ضمنا app config پروژه رو نیز لینک کردم:
http://s8.picofile.com/file/8317712242/App_config.html

parvizwpf
شنبه 07 بهمن 1396, 15:11 عصر
شما بهتره خودتون با sql به کانکشنی که دارید میگید وصل بشید اصلا ببینید میتونید وصل بشید

Ilosgroup
شنبه 07 بهمن 1396, 15:29 عصر
سلام.باشه .دوباره کانکشن رو چک می کنم نتیجه رو بهتون خبر می دم.

Ilosgroup
شنبه 07 بهمن 1396, 17:07 عصر
شما بهتره خودتون با sql به کانکشنی که دارید میگید وصل بشید اصلا ببینید میتونید وصل بشید

سلام //
چک کردم مشکلی وجود نداره ارتباط با sql برقرار میشه و به محض اینکه دستورات کانکشن استرینگ پویا را جایگزین می کنم خطا "The underlying provider failed on Open"میده

Ilosgroup
شنبه 07 بهمن 1396, 17:43 عصر
پیرو مشکل قبلی کد نویسی ایجاد کانکشن استرینگ من به شکل زیر :

private void Btn_Connect_Click(object sender, EventArgs e)
{

var EntityConnectionString = BiuldEntityConnection("Data Source=" + Txt_Ip.Text.Trim() + ";Initial Catalog=" +
Txt_NameDataBase.Text.Trim() +"user id=sa;Password="+Txt_passDatabase.Text.Trim()+ ";Integrated Security=false");

try
{
RegistryKey connectionkey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Automation_SystemEntities");

try
{
connectionkey.SetValue("ConnectionForAutomation",EntityConnectionString);
}
catch
{

MessageBox.Show("در ارتباط با سرور مشکلی رخ داده است");
}
finally
{
connectionkey.Close();
}
MessageBox.Show(" ارتباط با سرور برقرار شداز سیستم خارج شوید و مجدد وارد شوید");
this.Close();

}
catch
{
MessageBox.Show("در ارتباط با سرور مشکلی رخ داده است");
return;

}
}
------------------------------------------------------------------
public static string BiuldEntityConnection(string EntityConection_Dynamic)
{
//ساختن کانکش استرینک داینامیک که انتیتی بتواند از اند استفاده کند
var EntityConnection=new EntityConnectionStringBuilder
{

Provider = "System.Data.SqlClient",
ProviderConnectionString = EntityConection_Dynamic,
Metadata = "res://*"

};

return EntityConnection.ToString();
}
------------------------------------------------------------------------------------
در قسمت سازنده (Constructor)مدل دیتا بیس:
public partial class Automation_SystemEntities : DbContext
{
public Automation_SystemEntities(string connectionstrinName)
: base(connectionstrinName)
{
}

-------------------------------------------
مقداری که بعنوان کانکشن استرینک در رجیستری ذخیره میشه:
metadata=res://*;provider=System.Data.SqlClient;provider connection string="Data Source=.;Initial Catalog=Automation_SystemEntitiesuser id=sa;Password=1;Integrated Security=false"

-------------------------------
بخشی که از رجیستری کانکشن استرینک خوانده میشه تا فرم login اجرا بشه:
//خواندن کانکشن پویا از رجیستری سیستم
String RegistryConnectionString = "";
RegistryKey ConnectionString = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Automation_SystemEntities");
RegistryConnectionString = ConnectionString.GetValue("ConnectionForAutomation").ToString();


try
{
if (RegistryConnectionString == "")
{
BtnEnterAutomation.Enabled = false;
MessageBox.Show("ارتباط با سرور برقرار نشده است");

}
else
{
PublicVariable.MainConnectionString = RegistryConnectionString;
}
}
catch
{
BtnEnterAutomation.Enabled = false;
MessageBox.Show("ارتباط با سرور برقرار نشده است");


}


.....................