PDA

View Full Version : حرفه ای: connection string در برنامه مقصد



arshad89
دوشنبه 13 مرداد 1393, 15:12 عصر
سلام
یه برنامه دارم که با sql server 2008 r2 کار کردم، حالا برای انتقال به سیستم مقصد با کانکشن استرینگش مشکل دارم. با linq کدهامو نوشتم. تقریبا تمام کانکشن استرینگ هایی که در پست ها قبل بود رو تست کردم ولی به جواب نرسیدم. بانک رو در پوشه دیباگ گذاشتم و sql server 2008 r2 express رو هم نصب کردم ولی از کانکشن استرینگ خطا میگیره؟
حالا بر فرض که کانکشن هم درست بشه من dbml رو که اتصالات linq رو در اون درست کردم چی میشه؟ چطور باید کانکشن اون رو تو سیستم مقصد درست کنم؟

میشه یکی یه راهی نشون بده که مثلا یه کانکشن استرینگ تو app.config درست کنم و همه جای برنامم ازش استفاده کنم و در سیستم کاربر فقط این کانکشن رو تغییر بدم و برنامه با همون کانکشن درست کار کنه؟؟!! اگر نمیشه یه راهی بهم نشون بدید. ممنون

arshad89
دوشنبه 13 مرداد 1393, 15:28 عصر
اینم خطایی که در سیستم کاربر نشون میده. خودم میدونم مشکل از کانکشن استرینگه ولی نمیدونم چکار باید بکنم.



System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): The network path was not found

arshad89
دوشنبه 13 مرداد 1393, 16:03 عصر
این هم کانکشن استرینگی که دارم استفاده می کنم
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True

forodo007
دوشنبه 13 مرداد 1393, 17:32 عصر
برنامه رو بزار رو سروز و تو برنامت اینو بنویس
string conns = "Persist Security Info=True;Password=(password of database);User ID=(user name sa of sql);Initial Catalog=(data base name);Data Source=ip of server";
این نرم افزار رو سیستم طرف نصب کن و دیگه ایرادی نداره
در ضمن مطمن شو پورن 1433 رو اون سیستم باز

forodo007
دوشنبه 13 مرداد 1393, 17:34 عصر
اینم یه کنکشن دیگه ولی بالایی بهتره
چون اگه سیستم ها windows attuntication هم باشه اکی.
این یه مثاب
string conns = "Server=10.4.16.100;Database=tellbook;User Id=as;Password=123456"

arshad89
دوشنبه 13 مرداد 1393, 20:34 عصر
برنامه رو بزار رو سروز و تو برنامت اینو بنویس

string conns = "Persist Security Info=True;Password=(password of database);User ID=(user name sa of sql);Initial Catalog=(data base name);Data Source=ip of server";

این نرم افزار رو سیستم طرف نصب کن و دیگه ایرادی نداره
در ضمن مطمن شو پورن 1433 رو اون سیستم باز

من برنامم قراره رو یه سیستم اجرا بشه، من بانکم رو با sql server 2008 r2 exprees درستش کردم، الان رو سیستم خودم جواب میده ولی رو سیستم مقصد جواب نمیده، یعنی بانک رو گذاشتم تو پوشه debug و کانکشنم رو هم این طوری نوشتم:


public static string st = System.IO.File.ReadAllText(Application.StartupPath + "\\Info.ini");
public static string strcon = @"Data Source=.\\SQLEXPRESS;AttachDbFilename=" + st + ";Integrated Security=True;Connect TimeOut=30;User Instance=True";


اینو تو کلاس نوشتم و هر جا میخوام کانکشن بسازم به این strcon کانکت میشم. ولی تو یه سیستم مقصد این خطا را میده:


System.Data.SqlClient.SqlException (0x80131904): Cannot open database "MYDB" requested by the login. The login failed.
Login failed for user 'SAHAR-PC\SAHAR'.


یه توضیح: در هنگام نصب sql server express در کامپیوتر مقصد نام کامپیوتر که SAHAR-PC هست، SAHAR-PC\SAHAR به عنوان نام برای sqlserver انتخاب شد. گذاشتم به صورت پیشفرض نصب بشه.

لطفا اساتید راهنمایی بفرمایید اشکال در نصب هست یا در کد؟

arshad89
دوشنبه 13 مرداد 1393, 20:54 عصر
یکی نیست منو راهنمایی کنه؟؟ لطفا راهنمایی کنید. نیاز دارم به این کد.:افسرده:

m.khani_121
سه شنبه 14 مرداد 1393, 00:32 صبح
دوست عزیز همون کانکشن استرینگی که اول نوشتی درست بوده ، بزار رو همون کانکشن استرینگ ، فک کنم سرویسش استارت نبوده برو تو سرویس ها sqlexpress رو استارت کن

arshad89
سه شنبه 14 مرداد 1393, 00:36 صبح
دوست عزیز همون کانکشن استرینگی که اول نوشتی درست بوده ، بزار رو همون کانکشن استرینگ ، فک کنم سرویسش استارت نبوده برو تو سرویس ها sqlexpress رو استارت کن

بد بختی اینجاست که بوده :گریه:

m.khani_121
سه شنبه 14 مرداد 1393, 00:39 صبح
مطمئنی تو app.config تغییر دادی کانکشن استرینگ رو ؟

forodo007
سه شنبه 14 مرداد 1393, 00:39 صبح
من گفتم که اون کانکشن رو تو سورس برنامه بزار روش کارت رو بگو ببینم؟
آیا sql رو سروز نصب یا سیستم خودت رو میخوای سرور کنی؟

arshad89
سه شنبه 14 مرداد 1393, 00:43 صبح
من گفتم که اون کانکشن رو تو سورس برنامه بزار روش کارت رو بگو ببینم؟
آیا sql رو سروز نصب یا سیستم خودت رو میخوای سرور کنی؟
من میخوام تو سیستم مشتری مجبور نباشم اسکیو ال رو کامل نصب کنم واسه همین اکسپرس رو نصب کردم و فایل دیتابیس رو گذاشتم تو پوشه دیباگ، ولی اجرا نمیشد. نمیدونم اسکیو ال اکسپرس رو بد نصب کردم... نمیدونم دیگه چه کنم؟؟!!

arshad89
سه شنبه 14 مرداد 1393, 00:48 صبح
مطمئنی تو app.config تغییر دادی کانکشن استرینگ رو ؟
میشه بگید باید تو app.config چی بذارم کانکشن استرینگ رو؟؟؟ من اینو نوشتم


<add name="MYDB.Properties.Settings.MYDBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=MYDB;Integrat ed Security=True;Connect TimeOut=30;User Instance=True"
providerName="System.Data.SqlClient" />
<add name="MYDB.Properties.Settings.MYDBConnectionString1" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MYDB;Integrated Security=True"
providerName="System.Data.SqlClient" />

m.khani_121
سه شنبه 14 مرداد 1393, 00:54 صبح
<add name="MYDB.Properties.Settings.MYDBConnectionStrin g" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=MYDB.mdf;Inte grated Security=True;Connect TimeOut=0;User Instance=True"

providerName="System.Data.SqlClient" />




اینی که نوشتم رو بزار ، دومی رو پاک کن. connection timeout رو صفر گذاشتم و پسوند دیتابیسم میخواد . 2و3 بار دفعه اول برنامه رو باز کن تست کن .

m.khani_121
سه شنبه 14 مرداد 1393, 00:56 صبح
با Run as administrator هم تست کن برنامه رو .

khokhan
سه شنبه 14 مرداد 1393, 01:08 صبح
سلام
یه برنامه دارم که با sql server 2008 r2 کار کردم، حالا برای انتقال به سیستم مقصد با کانکشن استرینگش مشکل دارم. با linq کدهامو نوشتم. تقریبا تمام کانکشن استرینگ هایی که در پست ها قبل بود رو تست کردم ولی به جواب نرسیدم. بانک رو در پوشه دیباگ گذاشتم و sql server 2008 r2 express رو هم نصب کردم ولی از کانکشن استرینگ خطا میگیره؟
حالا بر فرض که کانکشن هم درست بشه من dbml رو که اتصالات linq رو در اون درست کردم چی میشه؟ چطور باید کانکشن اون رو تو سیستم مقصد درست کنم؟

میشه یکی یه راهی نشون بده که مثلا یه کانکشن استرینگ تو app.config درست کنم و همه جای برنامم ازش استفاده کنم و در سیستم کاربر فقط این کانکشن رو تغییر بدم و برنامه با همون کانکشن درست کار کنه؟؟!! اگر نمیشه یه راهی بهم نشون بدید. ممنون
ا . فایلapp config رو کلا پاک کن
2 . هرچی رشته اتصال در settings پروژه داری پاک کن
3 . یه کلاس حاوی رشته اتصالی که اشاره به بانک داخل دیباگ داره ایجاد کن
4 . هرجا که از مدل لینک نمونه سازی کردی نام کلاسی که رشته اتصال درونش هست رو مقابلش بنویس :


DataClasses1DataContext db = new DataClasses1DataContext(Constants.CONN_STRING);

الان اگه پروژه رو بالای قله قاف هم ببری بانک داخل پوشه دیباگ رو می شناسه :لبخند:

اینطوری :

البته رشته اتصال رو با بانک خودت ست کن

arshad89
سه شنبه 14 مرداد 1393, 19:04 عصر
سلام

khokhan دست شما درد نکنه، مشکلم برطرف شد و برنامه در کامپیوتر مقصد مشکلی ندارد جز گزارشگیری ها، اگر خاطرتون باشه گزارشگیری با fast report رو زحمت کشیدید و راهنمایی کردید، حالا که بانکم رو کنار پروژه گذاشتم دیگه جواب نمیده، برای اتصال به بانک در fastreport باید چه کار کنم؟؟؟

arshad89
سه شنبه 14 مرداد 1393, 21:30 عصر
درستش کردم :لبخند: ممنون باز هم بابت پاسخ های شما khakhon :تشویق: امیدوارم گره های بزرگ زندگیتون باز بشه. موفق باشید. امشب فرصت ندارم انشالا وقت کنم کد مکمل رو میزارم که بقیه دوستان این مشکلشون حل بشه.