PDA

View Full Version : مشکل اتصال localdb در سیستم ۳۲ بیت



yanni2
چهارشنبه 09 فروردین 1396, 20:42 عصر
با سلام دوستان من يك نرم افزار نوشتم كه با localdb كار مي كند نسخه sql هم 2014 مي باشدمشكل اينجاست كه در ويندوز 64 بيت روي كلاينت نصب مي كنم جواب مي دهد ولي در ويندوز 32 بيت مشكل اتصال به بانك اطلاعاتي مي دهد!‌ حتي يك بانك هم با sql 32bit‌درست كردم امتحان كردم ولي جواب نداد ران تایم های ۳۲ و ۶۴ localdb نصب کردم جواب نداد ممنون ميشم كسي راهنماييم كنه در اين رابطه

yanni2
پنج شنبه 24 فروردین 1396, 20:08 عصر
دوستان کسی نیست به این سوال من جواب بده خواهش میکنم بدجور گیر کردم این کانکشن من هست :
SqlConnection conn = new SqlConnection(@"Data Source =(localdb)\MSSQLLocalDB;AttachDbFilename=" + Application.StartupPath + @"\DB\asnaf.mdf;Integrated Security = True");
تو سیستم 32 بیت نصب نمیشه و تو سیستم های 64 بیت هم نصب میشه ولی تو بعضی از 64 بیت ها نمیشه ! نمیدونم چرا این پیغام خطاش هست

144953


بعضی وقتها هم پیغامی میده که توش نوشته Timout 0 و..
دوستان کمک کنید تو 64 بیت درست بود شانس من توسیستم مشتری فقط ایراد میگره و همین پیغام timeout میده
شنبه باید تحویل بدم
مرسی

alireza4474
پنج شنبه 24 فروردین 1396, 22:16 عصر
سلام
اول باید یه instance از طریق command prompt ایجاد کنی

از طریق این لینک میتونی کد های کار با localdb رو ببینی

https://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility

بعد از ایجاد instance باید اون رو run کنی

حالا میتونی از اون توی connectionString استفاده کنی

yanni2
پنج شنبه 24 فروردین 1396, 23:24 عصر
مرسی دوست عزیز آخه تو بعضی از سیستم ها بدون این کار می شد !

فقط یه سوال دیگه باید تو سیستم طرف این کارو بکنم و بعدش کانکشنو تغییر بدم ؟

بعد اینکه من sql2014 استفاده میکنم مشکلی نداره؟


میشه یک نمونه مثال بزنی خواهشاً

alireza4474
جمعه 25 فروردین 1396, 23:56 عصر
سلام
ببین دوتا راه داری

میتونی کد های start کردن instance رو توی فولدر startup سیستم مشتری قرار بدی
میتونی با بررسی موقعیت پایگاه داده در هنگاه اجرای برنامه (وجود instance ، متصل بودن db و...) ببینی باید چه کدی رو اجرا کنی که اتصال به پایگاه داده موفقیت امیز باشه

راستش میخوام کامل کامل توضیح ندم که ماهیگیری رو خودت یاد بگیری اما اگه واقعا میخوای ماهی رو بهت بدم، بگو:چشمک:

yanni2
شنبه 26 فروردین 1396, 20:34 عصر
دوست عزیز مرسی
من منظورم این بود که بگو چطور instance تعریف کنم من تو اون سایت رفتم ولی وقتی کدشو میزنم تو cmd عمل نمیکنه
میخوام بدونم دقیقا چطور بنویسم

راستش من چند روز فقط وقت دارم وقت یادگرفتن ماهیگیری ندارم
من قبلا با sqlexpress کار میکردم مشکلی نبود خواستم اینسری از نصب sqlexpress راحت بشه مشتری، بخاطر همین از localdb استفاده کردم

alireza4474
یک شنبه 27 فروردین 1396, 08:51 صبح
:ناراحت::ناراحت:
به خدا کار سختی نیست که ببین هر چی که نیاز داشتی رو برات فرستادم
144968

این هم راهنمای اجرای کد های cmd در C#

http://stackoverflow.com/questions/1255909/execute-cmd-command-from-code

http://stackoverflow.com/questions/1469764/run-command-prompt-commands

چند روز؟

کلش یه ربع طول میکشید

اینم بگم که اینجوری نمیتونی برنامه نویس بشی...!

yanni2
یک شنبه 27 فروردین 1396, 23:27 عصر
دوست عزیز در کل ممنونم
ولی اینا جواب من نبود کلاً منظور منو متوجه نشدی
در ضمن من برنامه نویس هستم 3 تا از برنامه هام تو بازار در حال اجرا هستش فقط دوست داشتم با localdb هم تست کنم
که با این اوصاف که کسی نیست درست راجبش توضیح بده ترجیح میدم با همون express کار کنم
من با localdb کار کردم که شاید مشتری راحت تر باشه ولی دیدم اینجور بازم همون گرفتاری هارو داره

بازم ممنون

alireza4474
دوشنبه 28 فروردین 1396, 10:13 صبح
بزار یکم با جزییات بیشتر توضیح بدم

اول از همه یه سناریو تعریف میکنم

مشتری ما از هیچ چیزی که مربوط به برنامه نویسیه سر در نمیاره پس همه چیز به گردن خودمونه حتی این مشتری عزضه اجرای یه خط کد توی cmd رو هم نداره
حالا میرسیم به سیستمش که احتمال قوی میدیم اصلا هیچ قسمتی از sql روی سیستمش نصب نیست
ما مستقیما به سیستم مشتری دسترسی نداریم و مشتری خودش برنامه رو نصب میکنه

خب حالا نوبت ماست طبق مطالبی که گفتم میفهمیم که اول باید مراحل نصب و اجرای برنامه خیلی کوتاه و اسون باشن
اولین کاری که مشتری باید بکنه نصب برنامه localdb هست
دومین کار نصب خود برنامه هست
بعد از این دو مرحله باید روی localdb یه instance ایجاد کنیم
که چند راه داره


وقتی که پروژه رو اجرا کرد این instance ایجاد شده و start بشه

خب برای انجام اینکار باید کد زیر رو توی formLoad پروژه ات جرا کنی
System.Diagnostics.Process.Start("CMD.exe", "/C sqlLocaldb create <instanceName> -s");

2.میتونیم یه فایل bat توی فولدر startup سیستمش بسازیم که هر بار که سیستمش رو روشن کرد این instance هم راه بیوفته

برای اینکار توی notePat این متن زیر رو بنویسید و با فرمت bat ذخیره اش کنین

sqlLocaldb create <instanceName> -s

بعد از اینکه تونستید یه instance روی سیستم مشتری ایجاد کنید و start کنید وقت اینه که پایگاه داده تون رو انتقال بدید که اون هم چند راه داره


BackUp&Restore
Script
Attatch

اگه توی اینا هم سوال دارید میتونید بپرسید و اینم بگم که چیزی که من خودم ترجیح میدم Script هست

اخرین مرحله مقدار دهی ConnectionString هست که میشه چیزی شبیه به متن زیر باشه

(localdb)\<instanceName>;AttachDbFilename=" + Application.StartupPath + @"\DB\asnaf.mdf;Integrated Security = True

yanni2
چهارشنبه 30 فروردین 1396, 00:11 صبح
مرسی دوست عزیز واقعا لطف کردی ممنونم ازت

فقط یه سوال برام مونده اونم اینکه منظور دقیقت از انتقال به پایگاه داده چیه ؟

alireza4474
چهارشنبه 30 فروردین 1396, 07:52 صبح
فقط یه سوال برام مونده اونم اینکه منظور دقیقت از انتقال به پایگاه داده چیه ؟

وقتی که ما تازه برنامه sqlLocalDB رو روی سیستم کاربر نصب میکنیم خب معلومه که پایگاه داده مارو نداره پس باید یا از طریق کد پایگاه داده رو روی سیستم طرف ایجاد کنیم یا باید از طریق فایل بکاپ یا خود mdf ldf پایگاه داده پایگاه داده ای که برنامه ی ما با اون کار میکنه رو به سیستم مشتری انتقال بدیم

قبلا هم گفتم سه روش داره که من script رو ترجیح میدم

yanni2
چهارشنبه 30 فروردین 1396, 22:03 عصر
آهان من خود mdf ldf و تو یک پوشه قرار میدیم تو برنامه

دوست عزیز خیلی ممنون دستت دردنکنه