PDA

View Full Version : انتقال پایگاه داده...؟



ProWorld
چهارشنبه 28 اسفند 1392, 20:44 عصر
سلام دوستان پیشاپیش سال جدید مبارک.

مدتی دچار یه مشکل بزرگ شدم اگر کسی راه چاره ای داره لطفا توضیح بده:

مسئله: فرض کنید برنامه یه دفترچه تلفن ساده با استفاده از Sql server نوشتیم و رو سیستم ما به خوبی کارمی کنه حالا مشکل اینجاست اگه بخوایم برنامه رو به صورت معمول پکیج کنیم و یه فایل نصبی به کاربر بدیم پایگاه داده رو باید چیکار کنیم که بی دردسر برای کار بر نرم افزار نصب بشه؟؟؟؟؟؟؟؟؟:عصبانی:

با تشکر از پاسخ هایی که خواهید داد...:قلب:

aghayex
چهارشنبه 28 اسفند 1392, 22:02 عصر
ببینید دوست عزیز شما باید متناسب با برنامتون پایگاه دادتونو انتخاب کنید . مثلا برای برنامه دفترچه تلفن باید یه دیتابیس کوچک مثل اکسس یا sql compact و ... رو انتخاب کنید .
برای برنامه های متوسط ( منظور از متوسط , حجم داده هاتون هست ) بیایید از sql express استفاده کنید
برای برنامه ها بزرگ بیایید از sql استفاده کنید

در خصوص دو توصیه اول شما هنگام نصب می خوای کار بکنی فقط لازمه دیتابیس کنار برنامه تون باشه
برای توصیه سوم : خوب هرکی برنامه ای می نویسه که این حجم داده رو پشتیبانی می کنه پس باید جور یه چیزهایی رو بکشه مثل نصب برنامه sql و اتچ کردن دیتابیس و ...

نکته : معمولا این چند سال دیگه نمی یان به طور مستقیم با دیتابیس کار کنن و میان از orm ها استفاده می کنن که بعضی از این orm ها خودشون برای اولین بار دیتابیس رو مطابق با ساختار دیتابیس براتون می سازن .

Mousavmousab
پنج شنبه 29 اسفند 1392, 00:55 صبح
دوست عزیز برای کار هاییی مثل دفترچه تلفن لازم نیست از SQL Server استفاده کنی. با SQLite که فقط یک DLL ساده هست و به هیچ چیزی وابسته نیست استفاده می کنن و اصلاٌ هیچ مشکلی برای کاربر یا مشتری نداره.

و اما اگه بخوای برنامه با SQL بنویسی حالا به هر دلیلی این خودش یک مشکل بزگه که هر کسی تقریباٌ به شیوه خودش عمل می کنه.
ولی یادت باشه نصب SQL Express برای مشتری کار سختی نیست. خیلی راحته
مهم اینه که مسیر بانک اطلاعاتی شما کجا باشه و در زمان RunTime آدرس بانک را با توجه به تکنولوژی که در برنامه استفاده کردین بتونین بدست بیارین. تازه باید امن هم باشه.
از اینها گذشته احتمال قوی یک برنامه گزارش گیری هم دارین که باید مسیر دینامیک هم به اون بدین.
تا عملی کار نکنی این نوشته های ما چندان کمکی به شما نمیکنه.
موفق باشی

ProWorld
پنج شنبه 29 اسفند 1392, 10:10 صبح
از همه دوستان که لطف کردن و پاسخ دادن ممنون.
اما منظورم از برنامه دفتر تلفن فقط یک مثال بود و در کل قصد داشتم بدونم پایگاه داده ای که با sql طراحی شده چطور باید در سیستم میزبان فقط با یه نصب ساده پیکر بندی بشه؟؟؟

aghayex
پنج شنبه 29 اسفند 1392, 11:21 صبح
شما سری آموزش های آقا نصیری رو در رابطه با entity freamwoek مطالعه کنید خیلی از ابهام هاتون رفع میشه . حتی روشهای بهتری رو می تونید پیاده سازی کنید .
http://www.dotnettips.info/search/label/entity%20framework#/page/1/date/desc

Mousavmousab
پنج شنبه 29 اسفند 1392, 21:05 عصر
از همه دوستان که لطف کردن و پاسخ دادن ممنون.
اما منظورم از برنامه دفتر تلفن فقط یک مثال بود و در کل قصد داشتم بدونم پایگاه داده ای که با sql طراحی شده چطور باید در سیستم میزبان فقط با یه نصب ساده پیکر بندی بشه؟؟؟



کلاٌ باید این موراد را در نظر بگیری بعد دیگه مشکلی نیست.
1-) یک نسخه از SQL Express باید روی سیستم مشتری نصب کنی
SQL Express نسخه های مختلفی داره

از نظر 32 یا 64 بیتی بودن
از نظر حجم
از نظر ورژن برنامه
از نظر اینکه آیا دوست داری نسخه ی SQL Express شما یک Shell یا پوسته داشته باشه که مثل نسخه اصلی بتونی دستورات را بنویسی و Run کنی
و ...

2-) شما باید نسخه دات نت فریم ورک مربوط به برنامه ات را همراه برنامه ای که نوشتی در کنار برنامه قرار بدی .
3-) باید یک نسخه از Windows Installer را هم توی Setup برنامه ات برای اینکه روی سیستم مشتری نصب کنی همراه Setup داشته باشی

دیگه هیچ مشکلی نیست و می تونی برنامه خودت را بنویسی .

فقط یادت باشه که روی سیستم مشتری باید ببینی سیستم عاملش چیه ؟ 32 بیتیه؟ 64 بیتیه؟ XP است ؟ Seven است ؟

اگر WinXP باشه که شما بانک را هر جا بزاری مشکلی نیست. معمولاٌ برای مثال دیده شده که کنار فایل EXE برنامه قرار می دن.

اگر سون باشه نمی تونی بانک را کنار فایل Seven قرار بدی چون ویندوز سون یک سطح جدید داره که نمی زاره برنامه ها بتونن چیزی در جایی از برنامه ی خودشون Write کنن و فقط می تونن بخونن یه عبارتی Read Only هستند.

به همین دلیل مایکروسافت یک مسیر اختصاص داده در پوشه ای به نام APPData که گفته هر برنامه ای هر چیزی می خواد Write کنه یا Read کنه بیاد اینجا کارشو انجام بده
مسیرش اینجاست :

C:\Users\YourAccountName\AppData\Roaming


موفق باشی داداش !!!

ProWorld
دوشنبه 04 فروردین 1393, 22:01 عصر
کلاٌ باید این موراد را در نظر بگیری بعد دیگه مشکلی نیست.
1-) یک نسخه از SQL Express باید روی سیستم مشتری نصب کنی
SQL Express نسخه های مختلفی داره

از نظر 32 یا 64 بیتی بودن
از نظر حجم
از نظر ورژن برنامه
از نظر اینکه آیا دوست داری نسخه ی SQL Express شما یک Shell یا پوسته داشته باشه که مثل نسخه اصلی بتونی دستورات را بنویسی و Run کنی
و ...

2-) شما باید نسخه دات نت فریم ورک مربوط به برنامه ات را همراه برنامه ای که نوشتی در کنار برنامه قرار بدی .
3-) باید یک نسخه از Windows Installer را هم توی Setup برنامه ات برای اینکه روی سیستم مشتری نصب کنی همراه Setup داشته باشی

دیگه هیچ مشکلی نیست و می تونی برنامه خودت را بنویسی .

فقط یادت باشه که روی سیستم مشتری باید ببینی سیستم عاملش چیه ؟ 32 بیتیه؟ 64 بیتیه؟ XP است ؟ Seven است ؟

اگر WinXP باشه که شما بانک را هر جا بزاری مشکلی نیست. معمولاٌ برای مثال دیده شده که کنار فایل EXE برنامه قرار می دن.

اگر سون باشه نمی تونی بانک را کنار فایل Seven قرار بدی چون ویندوز سون یک سطح جدید داره که نمی زاره برنامه ها بتونن چیزی در جایی از برنامه ی خودشون Write کنن و فقط می تونن بخونن یه عبارتی Read Only هستند.

به همین دلیل مایکروسافت یک مسیر اختصاص داده در پوشه ای به نام APPData که گفته هر برنامه ای هر چیزی می خواد Write کنه یا Read کنه بیاد اینجا کارشو انجام بده
مسیرش اینجاست :

C:\Users\YourAccountName\AppData\Roaming


موفق باشی داداش !!!

ممنون به نکات جالبی اشاره کردید
در مورد نکته آخر شخصا در هنگام استفاده از SQL exprees به این مشکل برخوردم و خیلی ها راهنمایی های گیج کننده ای کردن اما از شما ممنون که این مسئله هم حل شد
فقط چند تا سوال:
1) Windows Installer دقیقا چیه؟ یعنی یه ایجاد کننده ستاپ مثل Advanced Installer مثال زدید یا فرق داره؟
2) آیا SQL exprees مثل Sql server عمل می کنه یعنی چند تا کاربر می تونن رو یه دیتا بیس کارکنن؟
3) ببخشید با توضیح کاملی که دادید تازمانی که خودم این مسائل تست نکنم دیگه سوالی نیست.
تشکر.

esafb52
دوشنبه 04 فروردین 1393, 23:41 عصر
۱- خیر و سوال دوم بله ولی نسخه اکسپرس یه سری محدودیت مثل حجم داره

Mousavmousab
سه شنبه 05 فروردین 1393, 01:13 صبح
Windows installer راا توی گوگل جست و جو کن ببین چیه !!!

ببین دوست عزیز، این طور که معلومه شما هنوز یک بار هم روی سیستم طرف یک user را اجرا نکردی. اول برو یک User را اجرا کن ببین مشکل داره نداره ، بعد بیا راجع به Multi User اطلاعات کسب کن. می دونی چرا میگم مرحله به مرحله؟ چون اگه اینا را با هم گوش کنی چیزی جز اینکه گیج بشی دستگیرت نمیشه. پس مرحله به مرحله. یچه ها هم که توی این سایت ماشاالله زیاد اند.

SQL Express هم میتونه Multi User باشه ولی محدودیت هایی داره و بعضی چیز ها را باید تنظیم کنی و بعضی چیز ها را هم ساپورت نمی کنه مثل همین چیزی که دوستمون گفت محدودیت حجم داره و این موضوع اصلاٌ مهم نیست. چون وقتی ما از یک سیستم بیشتر داریم اصلاٌ چه کاریه از Express استفاده کنیم؟ با توجه به اینکه اینجا ایرانه و میتونی 10000 تا نسخه از Full Version برنامه SQL استفاده کنی. یعنی اگه لازم شد برو نسخه کامشو نصب کن.


SQL Express بیشتر در حد یک تست هست که اگه خوب بود برن نسخه کاملشو از مایکروسافت بخرن.

یادت باشه من توی بانک زیاد بلد نیستم و فقط مشکلات خودمو حل می کنم. دوستان هستند که واقعاٌ توی بانک حرفه ای اند. ولی فکر می کنم ما زبون همدیگه رو بهتر متوجه بشیم.

موفق باشی

Mousavmousab
سه شنبه 05 فروردین 1393, 01:15 صبح
دوست عزیز برای کارهایی در حد 1 تا 5 گیگابایت در سال پیشنهاد می کنم از SQLite استفاده کنی.
البته بسته به کار ولی SQLite خیلی جالبه فکرشو بکن به هیچ چیزی وابسته نیست. این مزیت خیلی خیلی مهمی است.
بدرود

ProWorld
چهارشنبه 13 فروردین 1393, 11:10 صبح
کلاٌ باید این موراد را در نظر بگیری بعد دیگه مشکلی نیست.
1-) یک نسخه از SQL Express باید روی سیستم مشتری نصب کنی
SQL Express نسخه های مختلفی داره

از نظر 32 یا 64 بیتی بودن
از نظر حجم
از نظر ورژن برنامه
از نظر اینکه آیا دوست داری نسخه ی SQL Express شما یک Shell یا پوسته داشته باشه که مثل نسخه اصلی بتونی دستورات را بنویسی و Run کنی
و ...

2-) شما باید نسخه دات نت فریم ورک مربوط به برنامه ات را همراه برنامه ای که نوشتی در کنار برنامه قرار بدی .
3-) باید یک نسخه از Windows Installer را هم توی Setup برنامه ات برای اینکه روی سیستم مشتری نصب کنی همراه Setup داشته باشی

دیگه هیچ مشکلی نیست و می تونی برنامه خودت را بنویسی .

فقط یادت باشه که روی سیستم مشتری باید ببینی سیستم عاملش چیه ؟ 32 بیتیه؟ 64 بیتیه؟ XP است ؟ Seven است ؟

اگر WinXP باشه که شما بانک را هر جا بزاری مشکلی نیست. معمولاٌ برای مثال دیده شده که کنار فایل EXE برنامه قرار می دن.

اگر سون باشه نمی تونی بانک را کنار فایل Seven قرار بدی چون ویندوز سون یک سطح جدید داره که نمی زاره برنامه ها بتونن چیزی در جایی از برنامه ی خودشون Write کنن و فقط می تونن بخونن یه عبارتی Read Only هستند.

به همین دلیل مایکروسافت یک مسیر اختصاص داده در پوشه ای به نام APPData که گفته هر برنامه ای هر چیزی می خواد Write کنه یا Read کنه بیاد اینجا کارشو انجام بده
مسیرش اینجاست :

C:\Users\YourAccountName\AppData\Roaming


موفق باشی داداش !!!

سلام.
در رابطه با نکته اخری که فرمودید "گفتید نوشتن وخواندن در ادرس C:\Users\YourAccountName\AppData\Roaming انجام می شه" من با برنامه Advanced Installer در هنگام نصب بانک sqlite رو به این ادرس منتقل می کنم اما مشکلی که هست با وجود اینکه هر کاربر در سیستم خودشم AccountName خواص خودشو داره چطور می تونم یه ادرس به دیتابیس در سی شارپ بدم؟
"C:\Users\??????????\AppData\Roaming

Mousavmousab
چهارشنبه 13 فروردین 1393, 20:10 عصر
یک کلاس هست به نام environment که می تونی به تمام پوشه های خاص در سیستم به صورت Runtime دسترسی پیدا کنی



private void Form1_Load(object sender, EventArgs e)
{
string EveryBodyPC_DynamicLocation =
Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData).ToString();
EveryBodyPC_DynamicLocation += @"\YourProgrammeFolderName";

}