ورود

نسخه کامل مشاهده نسخه کامل : چگونگی اعمال تغییرات به برنامه جدید



bluesky_ns
12-12-2009, 17:29
سلام دوستان من یک برنامه با vb.net و بانک sqlexpress2008 نوشتم و به مشتری تحویل دادم حالا میخوام تغییراتی در برنامم بدم که این تغییرات شامل تغییر در بانکم و خود برنامم میشه حالا برای اینکه این برنامه جدید رو تحویل بدم باید چطوری بانک و برنامه جدید رو تغییراتشو در برنامه قبلی اعمال کنم لطفا راهنمایی کنید چون من در این مورد هیچ اطلاعاتی ندارم

MTPROG
12-12-2009, 18:16
برای آپدیت فایل exe کافی آپدیت جدید رو به مشتری بدید با کپی کردن حل میشه

اما بانک اطلاعاتی:
شما میتونید از دو روش استفاده کنید
1-اینکه مشتری یک بکاپ براتون بفرسته (با ایمیل یا هرچی) و شما تغییرات رو اعمال کنید و فایل جدید رو بهش پس بدید
2-یه برنامه جدا به نام آپدیت بنویسید تا به صورت نرم افزاری تغییرات رو اعمال کنه(با کد نویسی)

حالا میخوای با کدوم انجام بدی تا بیشتر بحث کنیم

البته روش اول راحتره ولی دردسر انتقال فایلش بیشتره
روش دوم کارایی بهتری داره و دانش بیشتری تو تغییرات در بانک میخواد

bad_boy_2007
12-12-2009, 20:58
1- هرگز ساختار جداولتان را تغيير ندهيد
2- ايندكس هاي يونيك را به هيچ عنوان تغيير ندهيد
3 - براي ارتقاء حتي الامكان سعي كنيد از جداول جديد استفاده كنيد ، مگر اينكه نشود يا سربار پردازشي بصورت چشمگيري بالا برود
4- ويو ها ، توابع ، پروسيجرهاي ذخيره شده را با خيال راحت تغيير دهيد و از تغيير در آنها نترسيد !

جهت ارتقاء نياز داري كه هر نسخه از ديتابيست رو بتوني تشخيص بدي ، خيلي روي اين نكته دقيق باش . بايد در يك نقطه از ديتابيس ورژن رو ذخيره كني حالا ميخواد جدول تنظيمات باشه يا هر كجاي ديگه .

bluesky_ns
13-12-2009, 19:25
سلام دوست عزیزMTPROG میشه بیشتر در مورد کپی کردن فایل exe توضیح بدید منظورتون اینه که کجا باید کپی کنم در مورد بانکم خودتون با توجه به اینکه من اطلاعات زیادی در این مورد ندارم یک روش رو انتخاب کنید ممنوم

MTPROG
14-12-2009, 09:38
سلام دوست عزیزMTPROG میشه بیشتر در مورد کپی کردن فایل exe توضیح بدید منظورتون اینه که کجا باید کپی کنم

کاری نداره برنامه جدیدتون یکبار دیگه Rebuild کنید و فایل Exe ساخته شده در پوشه bin ویا Release رو به مشتری میدید و مشتری هم اون فایل رو دقیقا تو مسیری که برنامه نصب شده و فایل exe برنامه موجود هستش کپی میکنه و فایل جدید با فایل قدیم Replace میشه از این به بعد برنامه با تغییرات جدیدی که اعمال کردید کار میکنه


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

فرض کنید بانک شما احتیاجات زیر رو جهت آپدیت داره:
اضافه کردن فیلد X5 به جدول X
حذف کردن فیلد Y4 از جدول Y

اگر از روش اول استفاده کنی بکاپ رو میگری اون تو سیستم خودت تو محیط SQL SERVER بصورت دستی دو کار بالا رو انجام میدی و بعد بکاپ رو به مشتری پس میدی و تغییرات اعمال میشه

اگر از روش دوم استفاده کنی یک فایل exe جهت آپدیت ایجاد میکنی و تغییرات بالا رو با کد نویسی اعمال میکنی و فقط کافی این فایل رو مشتری بدی و وقتی اونو اجرا میکنه برنامه تغییرات رو تو بانک اعمال میکنه

روش اول زیاد اطلاعات آنچنانی نمیخواد فقط یکم دردسر داره
ولی روش دوم کارایی بیشتری داره و اطلاعات نسبتا بیشتری میخواد (البته نه زیاد)

حالا خودت میتونی انتخاب کنی.

اگه از روش دوم خواصتی استفاده کنی راهنماییت میکنیم

در ضمن توصیه های کاربر bad_boy_2007 که در پست 3 ذکر کردن خیلی مهمه حتما مد نظر داشته باش

BabyBoy
15-12-2009, 12:28
برای تغییر دادن Application هیچ مشکلی نداری و میتونی با ساختن Setup هم برانامه ی جدید رو با جای قبلی بزاری هم این که کنارش نصب کنی.

برای تغییر Data Base هم میتونی از دستورات مربوط به DDL استفاده کنی یعنی میتونی از یه Script ساده استفاده کنی و یا این که یه Application کوچولو بنویسی تا این کارارو هوشمندانه تر انجام بدی.

در ضمن صحبت تمام دوستان تایید میشه.

bluesky_ns
15-12-2009, 19:22
سلام دوست عزیز اگه میشه همون روش دوم رو توضیح بدید ممنونم

no name
16-12-2009, 17:03
tanxxxxxxx

MTPROG
17-12-2009, 12:55
فرض کنید شما قرار عملیات زیر رو جهت آپدیت انجام بدید
1-خالی کردن جدول TableName
2-صفر کردن شماره AutoNumber
3- حذف ستون X1
4-ایجاد ستون Y1

با نمونه کد زیر تمام اینکارها به صورت اتوماتیک توسط فایل آپدیت شما انجام میشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

bad_boy_2007
17-12-2009, 17:28
سلام رفقا ، ضمن تاييد راهنمايي جناب MTPROG ، به نظرم آمد يك روش ديگر را هم توضيح بدم .
مزيت اين روش اين است كه سريع است و 100 % مطمئن ، از اين نظر كه اطمينان كامل داريد كه تمام تريگر ها ، پروسيجر هاي ذخيره شده ، ايندكسها و ... همگي به درستي ارتقا مي يابد .فقط همانطور كه قبلا گفتم بايد اول از همه بتونين تشخيص بديد كه اين نسخه اي كه داريد كدام ورژن ديتابيس است .

مثلا برنامه شما ورژن هاي 1 ، 2 و 3 را دارد كه ورژن 3 آخرين نسخه آن است ، براي ارتقاي ورژن 1 به 2 يك فايل ايجاد كنيد (محتواي اين فايل متني در ادامه توضيح داده ميشود) و سعي كنيد دستورات اين فايل را با يك تراكنش (حتما با تراكنش) اجرا كنيد . براي ارتقاي 2 به 3 هم به همين شكل .

حال اينكه اين فايل چگونه بوجود مي آيد ، اول دو عدد بانك اطلاعاتي يكي نسخه قديمي و يكي نسخه ارتقا يافته را در SQL Attach كنيد ، سپس در VS از منوي Data گزينه Schema Compare را بزنيد و سورس را ورژن جديد و Target را هم بر روي نسخه قديمي تنظيم كنيد ، برايتان اسكريپت آبديت را ايجاد ميكند .

نياز به كمي دقت هم داريد از جمله اينكه يوزر هاي ديتابيس را در صورت عدم نياز اسكريپت نكنيد .

در مورد شيوه اجراي اين دستور هم در انجمن برنامه نويس جناب DelphiAsistance برنامه اي با نام SPGenerator قرار داده اند كه كمكتان ميكند .

bluesky_ns
17-12-2009, 20:58
این کدهایی رو که گفتید باید کجای برنامم قرار بدم

MTPROG
19-12-2009, 11:11
یک برنامه جدید با نام آپدیت ایجاد کنید و یک دگمه بزارید مثلا انجام عملیات اپدیت و این سورس رو تو اون دگمه بزارید و یکبار برنامه رو اجرا کنید و فایل اماده است

البته قبل از اجرای این کد مسایل دیگه مثل اینکه
1-آیا بانک وجود دارد یا نه؟
2-آیا این آپدیت قبلا صورت گرفته یا نه؟
و.... را که به شرایط شما بستگی داره بررسی کنید و بعد نمونه کد رو اجرا کنید

bluesky_ns
21-12-2009, 18:47
در حقیقت من باید بانک رو از کامپیوتر مشتری به کامپیتوتر خودم انتقال بدم و بعد این تغییرات رو ایجادکنم؟ در این حالات اطلاعات قبلی بانک که در اون ذخیره شده حفظ میشه ؟ وایا بانک رو در کامپیوتر خودم باید در همون مسیر C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data قرار بدم
ممنون

MTPROG
22-12-2009, 09:13
در حقیقت من باید بانک رو از کامپیوتر مشتری به کامپیتوتر خودم انتقال بدم و بعد این تغییرات رو ایجادکنم؟

نه اصلا احتیاجی به این کار نیست فقط کافی فایل exe مربوط به آپدیت رو به مشتری بدید تا فقط یکبار تو سیستمش اجرا کنه دیگه بانکش آپدیت میشه


در این حالات اطلاعات قبلی بانک که در اون ذخیره شده حفظ میشه ؟

در کل بستگی به نحوه آپدیت شما داره ولی با این روش حفظ میشه مگه اینکه خودتون بخواهید اطلاعات رو پاک کنید


وایا بانک رو در کامپیوتر خودم باید در همون مسیر C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data قرار بدم
ممنون

نه . اگه میخواهید بانک مشتری رو بیارید تو سیستم خودتون وقتی Attach میشه شما هنگام برنامه نویسی اصلا براتون مهم نیست که فایل تو چه مسیری قرار گرفته بلکه این خود SQL SERVER است که این کار رو میکنه در کل مهم نیست تو چه مسیری باشه

bluesky_ns
23-12-2009, 18:55
ببخشید بالاخر ه من متوجه نشدم باید بانک رو بیارم توسیستم خودم یا نه چون اگه بانک نباشه هنگام اجرای کد و نوشتن connection string باید بانک وجود داشته باشه که تغییرات روش اعمال بشه