PDA

View Full Version : data source را چگونه تنظیم کنم که برنامم روی سیستم دیگه خطا نده؟



sara.f
یک شنبه 09 اسفند 1388, 16:08 عصر
سلام دوستان
من با اینکه تا حالا تاپیک های زیادی در رابطه با سوال الانم دیدم، ولی آخرش یه جواب درست و حسابی دستم نیومد.

پیش فرض ها:
1.من یه برنامه دارم که بانکش SQL Express هست.
2.حالا من میخوام واسه برنامم setup بسازم با خود VS، که مسلما SQl express را هم بهش الحاق می کنم.

سوال:
باید چکار کنم که برنامم روی server دیگه با خطا روبه رو نشه؟ با توجه به اینکه اسم سرور روی هر سیستمی متفاوت هست، باید چه کار کنم که توی connection string به اسم data source خطا نده؟

Open-Source
یک شنبه 09 اسفند 1388, 16:14 عصر
مگه کانکشن استرینگنت رو چه جوری تعریف کردی؟
:متفکر:
من از این کانکشن استرینگ استفاده میکنم و مشکلی ندارم(آدرس فایل mdf رو بهش میدم):

@"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\db.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

sara.f
یک شنبه 09 اسفند 1388, 16:24 عصر
مگه کانکشن استرینگنت رو چه جوری تعریف کردی؟
:متفکر:
من از این کانکشن استرینگ استفاده میکنم و مشکلی ندارم(آدرس فایل mdf رو بهش میدم):

@"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\db.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

من از dot استفاده نمی کنم، من یه instance به اسم sara-pc\SQLEXPRESS ایجاد کردم و با اون کار می کنم.
خب مسلما هم اسم هر سروری با دیگری فرق داره.



"Data Source=sara-pc\\sqlexpress;Initial Catalog="+dbname+";Integrated Security=True"


یکی از دوستان قبلا بهم گفت که می تونی قبل از ساخت setup می تونم نام سیستم مشتری را در connection str قرار بدم، ولی خب این راه یکم مشکلات داره، آخه ممکنه طرف بخواد بعدا این برنامه را روی یه سیستم دیگه هم نصب کنه، به مظرم اینطوری نمی شه.

M.YasPro
یک شنبه 09 اسفند 1388, 16:34 عصر
چرا با دات . این کارو انجام نمیدین ؟

sara.f
یک شنبه 09 اسفند 1388, 16:43 عصر
چرا با دات . این کارو انجام نمیدین ؟

نیدونم! :لبخند:

فکر می کنم شنیده بودم که بهتره با local و . کار نکنم.
ولی واقعا نمی دونم که کار با . و local اشکال داره یا نه؟ یعنی اصولیه؟

M.YasPro
یک شنبه 09 اسفند 1388, 16:47 عصر
والا من تا حالا نشنیدم که همچین چیزی رو بگن .
فقط اگه چند ورژن sqlserver رو سیستم مقصد نصب باشه(مثلا 2000 با 2008 روی یه ویندوز) cnn تون اجرا نمیشه .

sara.f
یک شنبه 09 اسفند 1388, 16:52 عصر
والا من تا حالا نشنیدم که همچین چیزی رو بگن .
فقط اگه چند ورژن sqlserver رو سیستم مقصد نصب باشه(مثلا 2000 با 2008 روی یه ویندوز) cnn تون اجرا نمیشه .


یعنی کدوم connection اجرا نمیشه؟ اونیکه من نوشتم یا اگه با local بنویسم؟

من میخوام بدونم یعنی همه افرادی که یه برنامه واسه تحویل به مشتری می نویسن از local استفاده می کنن یا راه دیگه ای را استفاده می کنن؟

bachebahal_1363
یک شنبه 09 اسفند 1388, 16:59 عصر
اصولا برای ارتباط با دیتابیس از یک connectionString در app.config استفاده می شه و تمامی dataSource ها از این ConnectionString استفاده می کنند
و بعد بر روی کامپیوتر Client اگر تغییری در نام سرور ، نام کاربری و یا کلمه عبور دیتابیس ایجاد شد فقط با تغیر یک خط کد درون app.config میشه همه چیز رو Handle کرد که این کار توسط کاربر Client به راحتی انجام می شه

M.YasPro
یک شنبه 09 اسفند 1388, 17:01 عصر
اونیکه داره با . کانکت میشه
من که هر کی رو دیدم با . کانکت میشده .
ولی اگر باز شما میترسین میتونین اسم کامپیوترشو تو runtime بگیرین و به connectionstring الصاق کنید .

sara.f
یک شنبه 09 اسفند 1388, 17:11 عصر
من که هر کی رو دیدم با . کانکت میشده .
connectionstring الصاق کنید .


پس من یه نتیجه گیری می کنم ببینید درسته؟!

روی هر سیستمی حالا چه SQL SERVER نصب باشه یا نباشه ( اگر نصب باشه فقط یه ورژن)
با Data Source=. یا Data Source=(local) به مشکل بر نمی خورم، درسته؟

(با فرض اینکه من درام از SQL EXPRESS استفاده می کنم و اونو توی setup برنامم اضافه می کنم.

sara.f
یک شنبه 09 اسفند 1388, 17:15 عصر
اصولا برای ارتباط با دیتابیس از یک connectionString در app.config استفاده می شه و تمامی dataSource ها از این ConnectionString استفاده می کنند
و بعد بر روی کامپیوتر Client اگر تغییری در نام سرور ، نام کاربری و یا کلمه عبور دیتابیس ایجاد شد فقط با تغیر یک خط کد درون app.config میشه همه چیز رو Handle کرد که این کار توسط کاربر Client به راحتی انجام می شه

این که شما می گی هم درسته ولی خب شما فرض را بر این بذارید که client من اصلا نباید به کدها دسترسی داشته باشه و اصلا هم نمی دونه چی به چیه!

M.YasPro
یک شنبه 09 اسفند 1388, 17:16 عصر
روی هر سیستمی حالا چه SQL SERVER نصب باشه یا نباشه ( اگر نصب باشه فقط یه ورژن)
با Data Source=. یا Data Source=(local) به مشکل بر نمی خورم، درسته؟
اگر از express استفاده می کنین که باید به جای . از

.\SQLExpress
استفاده کنین . البته اینو که خودتون هم میدونید .

bachebahal_1363
یک شنبه 09 اسفند 1388, 18:08 عصر
خوب ببینین من روش اصولی و حرفه ای رو گفتم اصولا تمامی برنامه نویس های حرفه ای همین کار رو انجام میدن در ضمن app.config اطلاعات خاصی نداره که ارزشش ماننده سورس برنامه باشه همچنین aap.config به صورت Default در برنامه اجرایی شما موجود هست
معمولا کاربرا تنظیم کردن یک خط اونم به صورت text کار شاقی نیست