PDA

View Full Version : تحویل نسخه جدید نرم افزار به مشتری، بدون از دست دادن اطلاعات ثبت شده



Nima_kyan
چهارشنبه 19 مهر 1391, 08:59 صبح
سلام
من یه سوال دارم که خیلی وقته باهاش درگیرم.
فرض کنید شما یه برنامه ساختین و تحویل مشتری دادین و مشتری هم کلی اطلاعات ثبت کرده. حالا مشتری از شما میخواد که تغییراتی در بانک ایجاد کنید (مثلا یه جدول جدید و یا یکی دو فیلد به جدول که قبلا وجود داشته اضافه کنی). شماهم تغییرات رو اعمال میکنی و میخوای نسخه جدید رو تحویل بدی.
چی کار کنیم که داده های ثبت شده مشتری رو از دست ندیم؟؟ آیا تغییرات رو باید با Script اعمال کنیم؟ اگه اره به چه شکل؟؟

مسعود اقدسی فام
چهارشنبه 19 مهر 1391, 09:11 صبح
اگه برنامه اختصاصی نوشته شده و یه بانک اطلاعاتی بیشتر وجود نداره، راحت وارد سرور می‌شید و تغییرات رو در بانک اعمال می‌کنید. اما اگه یه بروزرسانی از سمت شما برای چندین مشتری مختلفه، بهترین کار در حالت کلی همون Script نوشتن هستش. با Create Table و Create Column جدول و ستون بسازید و اضافه کنید.

حسین شهریاری
چهارشنبه 19 مهر 1391, 09:13 صبح
چی کار کنیم که داده های ثبت شده مشتری رو از دست ندیم؟؟ آیا تغییرات رو باید با Script اعمال کنیم؟ اگه اره به چه شکل؟؟
بله!
از تغییراتتون Script تهیه کنید و اونا مثل یه Command اجرا کنین.
یا فایل Script را قبل از اجرای برنامه جدید توی SQL اجرا کنین(البته به شرطی که مشتری شما قادر به انجام مراحل کاری که شما تلفنی به اون میگید را داشته باشه)

Nima_kyan
چهارشنبه 19 مهر 1391, 09:21 صبح
بهترین کار در حالت کلی همون Script نوشتن هستش. با Create Table و Create Column جدول و ستون بسازید و اضافه کنید.

از تغییراتتون Script تهیه کنید و اونا مثل یه Command اجرا کنین.
یا فایل Script را قبل از اجرای برنامه جدید توی SQL اجرا کنین
با این کار اطلاعات ثبت شده که حذف نخواهد شد؟
و اینکه قطعا یه سری sp جدید هم به بانک اضافه شده، من باید تک تک sp هارو رو سیستم مقصد اجرا کنم؟؟

حسین شهریاری
چهارشنبه 19 مهر 1391, 09:44 صبح
اگه تغییرات کلی هست، مثلا به جدول یا پروسیجر افزوده شده، توسط خود SQLServer اسکریپتشا بسازید.
ولی اگه تغییر جزئی هست مثلا فیلدی به جدولی افزوده شده و ... ، میتونی دستور Alter را بنویسی و اونا اجرا کنی.
یا اینکه مجموعی از حالات فوق هست.

morteza271
چهارشنبه 19 مهر 1391, 09:48 صبح
روشی که دوستان گفتن درسته ولی اگه فرض کنید برنامه رو به بیش از 100 مشتری فروختی و حالا میخوای آپدیت کنی اون وقت باید چیکار کنی.
قادعدتا نمیشه به 100 نفر زنگ زد و بهشون گفت که برن روی سرورشون Scriptها رو اجرا کنن درسته؟!

در ضمن اینطوری امنیت بانک اطلاعاتی و سایر موارد چی میشه!!!!!!

چجوری میشه یه exe ساخت و بهشون داد.بطوریکه با اجرا شدن این exe بره Scriptها رو اجرا کنه و حتی فایل های لازم رو در مسیر برنامه کپی کنه!
برای این کار دوستان نظری دارن؟
با تشکر...

حسین شهریاری
چهارشنبه 19 مهر 1391, 10:02 صبح
خب این ساده هست!
شما با Setup سازهای معروف میتونی دستورات SQL را اجرا کنین.
یا یه برنامه ساده بنویسید که فقط توسط cmd اسکریپتها را Run کنه!

TinaRezai
چهارشنبه 19 مهر 1391, 10:05 صبح
من اين سوالو از آقاي حبيبي پرسيدم گفتن كه يه جدول درست ميكنيم توي ديتا بيس و ورژن ديتابيس رو توش ميزنيم . توي فايل اجرايي هم ورژن خود فايل اجرايي رو ميزنيم . خب حالا وقتي برنامه اجرا ميشه و ميبينه ورژن ديتابيس با ورژن فايل اجرايي يكي نيست تغييراتي رو كه در پست بالا دوستمون گفت بصورت Command اجرا ميكنيم و بعدش ورژن ديتابيس رو Update ميكنيم تا دفعه بعد ديگه لازم به آپديت نباشه.
دوستان تشكر كنيد ازم اين اولين سوالي هست كه دارم ج ميدم:خجالت:

morteza271
چهارشنبه 19 مهر 1391, 10:08 صبح
یا یه برنامه ساده بنویسید که فقط توسط cmd اسکریپتها را Run کنه!
امکانش هست یه نمونه بدین که چطوری میشه با cmd کوئری ها رو اجرا کرد؟
ممنون میشم.

مسعود اقدسی فام
چهارشنبه 19 مهر 1391, 10:14 صبح
راستی یه نکته. اگه به یه جدول که قبلا اطلاعات داره ستون اضافه می‌کنید، حتما حواستون باشه که Allow Null باشه. چون غیر این باشه SQL وقت اضافه کردن ستون به هر سطر سعی می‌کنه اون رو مقدار دهی کنه که خب فعلا مقداری نداریم. مگر اینکه DefaultValue برای ستون در نظر بگیرید که مثلا برای مقادیر عددی صفر باشه. یعنی همه صفر می‌شن. یعنی وقتی ستون اضافه شد، تمام سطرها برای اون ستون مقدار صفر رو می‌گیرن . بعدا اگه لازم شد یکی یکی باید عوض کنید.

مسعود اقدسی فام
چهارشنبه 19 مهر 1391, 10:17 صبح
امکانش هست یه نمونه بدین که چطوری میشه با cmd کوئری ها رو اجرا کرد؟
ممنون میشم.

منظوزشون احتمالا SQLCommand‌ هستش از cmd. اگه اونم نیست نظر من همینه! یعنی با SQLCommand می‌شه دستورات لازم برای تغییرات رو اعمال کرد. فقط می‌مونه بحث ConnectionString که اصولا روی دستگاه سرور چندان سختی خاصی نداره.

حسین شهریاری
چهارشنبه 19 مهر 1391, 10:19 صبح
امکانش هست یه نمونه بدین که چطوری میشه با cmd کوئری ها رو اجرا کرد؟

توی برنامتون چطوری دستورات DDL را اجرا میکنید؟
مثلا اینطوری:

cmd.CommandText="Alter Table Orders Add OrderId int";
cmd.ExecuteNonQuery();
متوجه شدید؟
تمامی اسکریپتها به همین سبک پشت سره هم Run میشن.

morteza271
چهارشنبه 19 مهر 1391, 10:31 صبح
اوکی.
اینو که میدونستم.
منظورتون رو از cmd اشتباه متوجه شدم!
بازم ممنون.

Nima_kyan
چهارشنبه 19 مهر 1391, 11:23 صبح
بچه ها از همتون ممنونم.
به جوابی که میخواستم رسیدم. فک میکنم بهترین روش ترکیبی از پیشنهاد حسین شهریاری (http://barnamenevis.org/member.php?94385-%D8%AD%D8%B3%DB%8C%D9%86-%D8%B4%D9%87%D8%B1%DB%8C%D8%A7%D8%B1%DB%8C) و TinaRezai (http://barnamenevis.org/member.php?267151-TinaRezai) باشه. یعنی :

یه برنامه ساده بنویسید که فقط توسط cmd اسکریپتها را Run کنه!
من تو یه نمایندگی یه موسسه که حدود 200 تا نمایندگی در سراسر کشور داره واسه آپدیت نرم افزارش دیدم که از همین روش استفاده میکنه ولی بسیار تاکید میکنه که این application آپدیت نرم افزار رو فقط یه بار اجرا کنید، اگه بیش از یه بار اجرا شه نرم افزار دچار مشکل خواهد شد.
که به نظرم با ایده پایین این مشکل هم حل خواهد شد.

يه جدول درست ميكنيم توي ديتا بيس و ورژن ديتابيس رو توش ميزنيم . توي فايل اجرايي هم ورژن خود فايل اجرايي رو ميزنيم . خب حالا وقتي برنامه اجرا ميشه و ميبينه ورژن ديتابيس با ورژن فايل اجرايي يكي نيست تغييراتي رو كه در پست بالا دوستمون گفت بصورت Command اجرا ميكنيم و بعدش ورژن ديتابيس رو Update ميكنيم تا دفعه بعد ديگه لازم به آپديت نباشه.
مرسی

TinaRezai
چهارشنبه 19 مهر 1391, 18:52 عصر
بچه ها از همتون ممنونم.
به جوابی که میخواستم رسیدم. فک میکنم بهترین روش ترکیبی از پیشنهاد حسین شهریاری (http://barnamenevis.org/member.php?94385-%D8%AD%D8%B3%DB%8C%D9%86-%D8%B4%D9%87%D8%B1%DB%8C%D8%A7%D8%B1%DB%8C) و TinaRezai (http://barnamenevis.org/member.php?267151-TinaRezai) باشه. یعنی :

من تو یه نمایندگی یه موسسه که حدود 200 تا نمایندگی در سراسر کشور داره واسه آپدیت نرم افزارش دیدم که از همین روش استفاده میکنه ولی بسیار تاکید میکنه که این application آپدیت نرم افزار رو فقط یه بار اجرا کنید، اگه بیش از یه بار اجرا شه نرم افزار دچار مشکل خواهد شد.
که به نظرم با ایده پایین این مشکل هم حل خواهد شد.

مرسی
خواهش ميكنم

alimanam
چهارشنبه 19 مهر 1391, 19:36 عصر
با سلام

به صورت معمول هر اطلاعاتی که در دیتابیس ذخیره میشه در برنامه استفاده و نمایش داده میشه پس با توجه محتمل بودن Upgrade نمودن برنامه اصلی بهتره از یک الگوریتم بهتری قضیه حل و فصل بشه . برای مثال میشه دیتابیس جدید رو به صورت اسکریپت شده در اختیار کاربر قرار داد تا اجراش کنه (بوسیله یک UI ساده که وظیفه اش همینه ) ( حالا به هر روشی چه به صورت آفلاین چه آنلاین ) بعد اطلاعات ذخیره شده در دیتابیس جاری رو بهش انتقال داد ( با این کار دیگه نیازی به ایجاد فانکشن ها & پروسیجرهای احتمالی نخواهید بود چون در دیتابیس جدید حضور فیزیکی دارن ) لطفا توجه کنین که این روش نسبت به روش قبلی ارجح تره چون این فرض رو در نظر بگیرین که ممکنه یک فیلد به صورت کلی از دیتابیس قدیمی حذف شده باشه .

موفق باشید./

morteza271
چهارشنبه 19 مهر 1391, 19:50 عصر
دوست عزیز یعنی منظور شما اینه که اطلاعات دیتابیس قدیمی رو به دیتابیس جدید انتقال بدیم؟؟؟؟!!!!!!!!!!

alimanam
چهارشنبه 19 مهر 1391, 20:21 عصر
با سلامی دوباره


دوست عزیز یعنی منظور شما اینه که اطلاعات دیتابیس قدیمی رو به دیتابیس جدید انتقال بدیم؟؟؟؟!!!!!!!!!!

بله حتماً باید به این صورت باشه ! شما این رو در نظر بگیرین که اگه به این صورت نباشه کاربران عملاً دسترسی به دیتابیس رو از دست خواهند داد ( چون دسترسی کاربران باید حتماً مسدود بشه دلیلش هم که واضحه دیگه ) ممکنه تراکنش update کردن چندین دقیقه طول بکشه ( بستگی به حجم داده ها & نسخه سرویس دهنده دیتابیس و مشخصات سخت افزاری سیستم کاربر داره ) همچنین عملیات به روز رسانی دیتابیس ممکن هست به هر دلیل موجه و غیر موجه با اشکال روبرو بشه !خوب همین یکی دو محدودیت باعث میشه که اطلاعات از دیتابیس قبلی به دیتابیس جدید انتقال پیدا کنه نه اینکه دیتابیس قبلی رو رزور کنیم تا عملیات Update دیتابیس خاتمه پیدا کنه .

موفق باشید./

morteza271
چهارشنبه 19 مهر 1391, 21:00 عصر
من که کاملا مخالم البته باید بقیه دوستان هم نظرشون رو بگن!
ولی من نظرم اینه :
شما در نظر بگیرید که ما میخوایم برنامه رو آپدیت کنیم و توی این آپدیت یک جدول جدید، یک ستون به یه جدول قدیمی اضافه میشه،و مثلا 10 تا سطر به یکی از جدولهای قدیمی اضافه میشه.
بعد دیتابیس قدیمی ما دارای 20 تا جدول و هر جدول دارای 100 سطر (که اینم بگم این واقعا حداقلش هست).
حالا ما بیایم و این همه اطلاعات رو انتقال بدیم به دیتابیس جدید؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!
اصلا منطقی نیست و درست نیست این کار رو بکنیم!
در مورد خطاهای احتمالی هم که گفتین میتونیم خوب قبلش یه بک آپ بگیریم و اگه مشکلی پیش اومد ری استور کنیم! (به هر حال یک آپ و ری استور رو برای همین وقتها گذاشتن دیگه!!!!!!)

به نظر من همون روشی که دوستان گفتن خیلی خوبه چرا که شرکت های بزرگی رو دیدم که اون شکلی به مشتریاشون آپدیت میدن و فقط scriptهای جدید رو اجرا میکنن.

به هر حال بازم میگم این نظر منه و دوستا دیگه هم لطف کنند و نظرشون رو بدن.
با تشکر

alimanam
چهارشنبه 19 مهر 1391, 21:18 عصر
با سلامی 2 باره !


حالا ما بیایم و این همه اطلاعات رو انتقال بدیم به دیتابیس جدید؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!

دوست عزیز نظر شما محترم ولی این قضیه رو در نظر بگیرین در برنامه نویسی همیشه اولویت ها حرف میزنن نه چیز دیگه این جز ابتدایی ترین مسائلی هست که یه برنامه نویس در نظر میگیره ! شما در نظر یگیر برنامه تحت شبکه باشه بعد بخواین الگوریتمی که شرح دادین رو پیاده سازی کنین !!!!!!! حفظ اطلاعات & یکپارچگی داده ها & در دسترس بودن پایگاه داده برای کاربران که یکی از عوامل حیاتی برنامه های تحت شبکه است و موارد امنیتی دیتابیس و خیلی مسائل کوچک و بزرگ دیگه باعث میشه روش شما مردود بشه . البته این نیز به مانند نظر شما یک نظر شخصی هستش و مطمئناً بدون اشکال نیست .

موفق باشید./

morteza271
چهارشنبه 19 مهر 1391, 21:23 عصر
همین مثال خودتون رو برای نظر خودتون در نظر بگیرین ببینید چی میشه!!!!!!!!!!!!!
در یه برنامه ی تحت شبکه کدوم یکی بهتره :
اینکه اطلاعات قدیمی رو که ممکنه تعداد سطرهاش به میلیون و بیشتر برسه رو به دیتابیس جدید اضافه کنیم!
یا اینکه چند تا script ساده رو که دیگه خیلی زیاد باشه میشه 100 تا کوئری ...........

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

alimanam
چهارشنبه 19 مهر 1391, 21:33 عصر
با سلامی 3 باره !!!!


همین مثال خودتون رو برای نظر خودتون در نظر بگیرین ببینید چی میشه!!!!!!!!!!!!!

دوست عزیز ! من دارم از اولویت باهاتون صحبت میکنم شما داری با من از سرعت اجرای اسکریپت n تعداد رکورد صحبت میکنی !؟ در یک برنامه تحت شبکه اولین و مهمترین اولویتش یکپارچگی دیتابیس و در دسترس بودن اطلاعات حیاتی برنامه خواهد بود نه سرعت اجرای فلان اسکریپت ! اصلاً سرعت بزار 2 روز طول بکشه خوبه ؟ مهم نیست مهم اینه که بعد 2 روز دیتابیس برنامه یکدست , به روز و همیشه قابل دسترس باشه . من چندتا مثال زدم که عمق فاجعه رو درک کنین وگرنه به هزار و یک دلیل دیگه کسی نمیاد پایگاه داده فعلی یک برنامه تحت شبکه رو به صرف Update کردن از دسترس خارج کنه .

موفق باشید./

morteza271
چهارشنبه 19 مهر 1391, 21:44 عصر
من نمیدونم والا .............

اصلا بی خیال سرعت ولی به نظر شما روش من چی میشه که باعث میشه دیتابیس یکپارچه نباشه؟؟؟!!!!!!!

alimanam
چهارشنبه 19 مهر 1391, 22:13 عصر
بازم سلام !


اصلا بی خیال سرعت ولی به نظر شما روش من چی میشه که باعث میشه دیتابیس یکپارچه نباشه؟؟؟!!!!!!!

ببین عزیز ! یکی از مهمترین معایبی که روش شما میتونه داشته باشه این هستش که ذات فایل های اسکریپتی این هستش که پایبند دستورات T-SQL هستن حالا بماند که میشه در دستورات SQL شرط تعریف کنیم یا از توابعش استفاده کنیم , و هزار امکان دیگه , ولی T-SQL هیچ وقت نمیتونه کار یک زبان برنامه نویسی رو انجام بده , این رو که دیگه قبول دارین ؟ من یه مثال ساده میزنم ( در مثال مناقشه نیست پس لطفا نگین این رو میشه با فلان شرط T-SQL یا فلان تابع انجام داد ) :

شما فرض کن در یک جدول N تعداد فیلد داری حالا بر حسب یک امکان یا یک نیاز قراره یک فیلد دیگه به این جدول اضافه بشه ! بر حسب تصادف این فیلد که حتماً هم باید مقدار دهی اولیه هم بشه ( فرض کن بعد یه پروسه محاسباتی که خودش درگیره اطلاعات چند فیلد در همان جدول یا جدول دیگه میشه در این فیلد جدید ثبت بشه ) خوب شما چطوری میخوای بدون از بین بردن حداقل اشتباه و دادن حق انتخاب به کاربر این مقدار اولیه رو در فیلد جدید درج کنی ؟ برای مثال قراره به کاربر این امکان رو بدین که برای هر ردیف از فلان جدول در فیلد جدیدی که به جدول اضافه شده این مقدار محاسبه شده + امکان تغییر عدد محاسبه شده رو بدین یا اینکه همان عدد محاسبه شده رو به عنوان عدد پیش فرض درنظر بگیره و ادامه کار انجام بشه یا یا یا .... به نظر شما به صرفه هست این کار رو با کلی سروکله زدن با دستورات T-SQL انجام بدین ؟ یا اینکه یک UI بنویسین که همه این موارد رو در دسترس کاربر بزارین که خودش تصمیم بگیره چطوری عملیات به روز شدن دیتابیس انجام بشه . عملیاتی که در اصل 100% به خاطر رفع یک نقص / اضافه شدن یک امکان / یا بهبود کارایی یک برنامه صورت میگیره . هزاران مثال دیگه هم میشه زد ...

موفق باشید./

morteza271
چهارشنبه 19 مهر 1391, 22:37 عصر
نمیخوام به این بحث ادامه بدم ولی اصلا صحبت های شما رو قبول ندارم و به نظرم اصلا منطقی و معقول نیست این کار!!!
نمیدونم دقیق منظورتون رو از مثال متوجه شدم یا نه ولی بازم اصلا به نظرم درست نیست این راه حلی که واسه مثالش زدین!و به نظرم راحت تر میشه انجامش داد! البته اگه تایپیک های اول رو خونده باشین ماهم نگفتیم که فقط script اجرا بشه!
نتیجه این شد که داخل خود برنامه سی شارپ scriptهای جدید رو اجرا کنیم و دیگر امور لاطم مثلا کپی کردن چند تا فایل و اگه یه خورده فک کنید دقیقا همون راه حل شما به مثال بالا رو هم میشه خیلی راحت انجام داد!!!
من دیگه به این بحث ادامه نمیدم ولی همون نتیجه ی قبلی که دوستان گرفتن بهتره...
دوستان دیگه که هیچ نظری ندادن انگاری همه رفتن خوابیدن!!!
موفق باشید...

alimanam
چهارشنبه 19 مهر 1391, 22:45 عصر
با سلام

ببین عزیز اینجا کسی قرار نیست نظرش رو به بقیه بقبولونه که شما بخوای قبول کنین یا نکنین !!!!! هرکسی میاد یه نظری میده همین نتیجه گیری فکر کنم با خواننده است دیگه ناسلامتی به همچین امکانی میگین تالار نه اتاق جنگ .

موفق باشی عزیز

Nima_kyan
چهارشنبه 19 مهر 1391, 23:13 عصر
سلام
من خیلی با روش دوستمون alimanam (http://barnamenevis.org/member.php?43498-alimanam) آشنا نیستم
(بوسیله یک UI ساده که وظیفه اش همینه )

ولی من حدود دو ساله دارم با یه نرم افزار با روشی که در پست های اولیه این تایپیک مورد بحث بود البته با تفاوت های اندکی، کار میکنم که هیچ وقت به مشکل بر نخوردم. نه از لحاظ سرعت ، نه یکپارچگی داده هام و امنیتم هم که تقریبا با Backup & Restore قابل تامین هستش.

alimanam (http://barnamenevis.org/member.php?43498-alimanam) عزیز اگه بیشتر راجبه نحوه پیاده سازی روشتون توضیح بدین ممنون میشیم با این روش هم آشنا شیم.

TinaRezai
پنج شنبه 20 مهر 1391, 07:53 صبح
به نظر منم روش آقاي alimanam هم پيچيده هست و هم بنظر زمان بر و غير اصولي...

ali_habibi1384
شنبه 22 مهر 1391, 08:11 صبح
با سلام

به صورت معمول هر اطلاعاتی که در دیتابیس ذخیره میشه در برنامه استفاده و نمایش داده میشه پس با توجه محتمل بودن Upgrade نمودن برنامه اصلی بهتره از یک الگوریتم بهتری قضیه حل و فصل بشه . برای مثال میشه دیتابیس جدید رو به صورت اسکریپت شده در اختیار کاربر قرار داد تا اجراش کنه (بوسیله یک UI ساده که وظیفه اش همینه ) ( حالا به هر روشی چه به صورت آفلاین چه آنلاین ) بعد اطلاعات ذخیره شده در دیتابیس جاری رو بهش انتقال داد ( با این کار دیگه نیازی به ایجاد فانکشن ها & پروسیجرهای احتمالی نخواهید بود چون در دیتابیس جدید حضور فیزیکی دارن ) لطفا توجه کنین که این روش نسبت به روش قبلی ارجح تره چون این فرض رو در نظر بگیرین که ممکنه یک فیلد به صورت کلی از دیتابیس قدیمی حذف شده باشه .

موفق باشید.
يعني شما ميخوايد بگيد انتقال اطلاعات از يك بانك كه مثلا هر جدولش 100.000 تا ركورد داره مدت زمان كمتري طول ميكشه نسبت به اضافه كردن چندتا پراسيجر و يا يا چندتا فيلد؟؟؟؟





دوست عزیز ! من دارم از اولویت باهاتون صحبت میکنم شما داری با من از سرعت اجرای اسکریپت n تعداد رکورد صحبت میکنی !؟ در یک برنامه تحت شبکه اولین و مهمترین اولویتش یکپارچگی دیتابیس و در دسترس بودن اطلاعات حیاتی برنامه خواهد بود نه سرعت اجرای فلان اسکریپت ! اصلاً سرعت بزار 2 روز طول بکشه خوبه ؟ مهم نیست مهم اینه که بعد 2 روز دیتابیس برنامه یکدست , به روز و همیشه قابل دسترس باشه . من چندتا مثال زدم که عمق فاجعه رو درک کنین وگرنه به هزار و یک دلیل دیگه کسی نمیاد پایگاه داده فعلی یک برنامه تحت شبکه رو به صرف Update کردن از دسترس خارج کنه .

موفق باشید./
اولويتها چي هستند از نظر شما؟ اگر سرعت اولويت نيست پس چي اولويته؟
اگر شما تمام اين صحبتها رو كرديد تا بگيد يه برنامه تحت شبكه رو براي بروز رساني نبايد قطع كرد پس بگيد در روش شما فايل اجرايي جديد برنامه ما چطور در دسترس كاربرامون قرار بگيره؟ مگر نه اينكه بايد از برنامه خارج بشيم و فايل جديد رو Replace كنيم؟ خب در همين وقفه برنامه رو هم بروز ميكنيم .
اگر راه شما چيزي غير از برداشته منه بفرماييد.
يه سوال شخصي:من تاپيكهاي شما رو هميشه در بخش VB ميديدم، چيشد كه اومديد تالار سي شارپ؟

r_s1389@yahoo.com
شنبه 22 مهر 1391, 08:46 صبح
سلام به همه
میگم آقا آموزنده بود میشه ادامه بدین ؟
سوء تفاهم نشه ها
تشکر

alimanam
شنبه 22 مهر 1391, 21:13 عصر
با سلام


يعني شما ميخوايد بگيد انتقال اطلاعات از يك بانك كه مثلا هر جدولش 100.000 تا ركورد داره مدت زمان كمتري طول ميكشه نسبت به اضافه كردن چندتا پراسيجر و يا يا چندتا فيلد؟؟؟؟

من همچین حرفی زدم ؟ واقعاً نمیدونم مسئله به این آسونی رو چطوری سخت میکنین همه پست های من در این تاپیک یه مسئله رو دنبال میکنه و اون اینه که برای مثال اگه برنامه ایی که میخواین دیتابیسش رو اپدیت کنین از نظر من بهتره که دیتابیس جدید به صورت مدیریت شده و با استفاده از UI جداگانه اپدیت بشه ( فایل دیتابیس جدید و به صورت مجزا ساخته ) نه اینکه بیای یه اسکریپت رو خط به خط Execute کنین و برنامه تا اجرای درست همه تغییرات بلاتکلیف باشه ( اجرای درست همه این تغییرات بهترین , و خوشبینانه ترین حالت هستش !!!! ) همین و بس . این نظر شخصی منه شما هم نظری دیگری دارین محترمه و میتونه قابل قبول باشه .


اولويتها چي هستند از نظر شما؟ اگر سرعت اولويت نيست پس چي اولويته؟
اگر شما تمام اين صحبتها رو كرديد تا بگيد يه برنامه تحت شبكه رو براي بروز رساني نبايد قطع كرد پس بگيد در روش شما فايل اجرايي جديد برنامه ما چطور در دسترس كاربرامون قرار بگيره؟ مگر نه اينكه بايد از برنامه خارج بشيم و فايل جديد رو Replace كنيم؟ خب در همين وقفه برنامه رو هم بروز ميكنيم .


سرعت میتونه اولویت خیلی مهمی باشه اما ظاهراً شما همه سرعت ها رو به یک دید نگاه میکنین !!! فکر کنم در پست هام توضیحات کافی داده باشم و با یک بار خوندن با دقت درک بهتری از صحبت هایی که کردم داشته باشین . ( لطفا توجه کنین که پروسه آپدیت دیتابیس از دید من به هیچ عنوان نباید روی کارکرد برنامه ایی که برای مثال تحت شبکه هست اثر منفی بزاره ) دیتابیس جدید هروقت ایجاد , جداول پر شد اون وقته که با یه Restart برنامه , به روز بشه .


يه سوال شخصي:من تاپيكهاي شما رو هميشه در بخش VB ميديدم، چيشد كه اومديد تالار سي شارپ؟

صحبت شما رو بیشتر شوخی قلمداد میکنم تا سوال شخصی ! آخه خودت از سوالت خنده ات نمیگیره ؟ یعنی چی , چی شد اومدم تالار سی شارپ ! باید قبلش از کسی اجازه میگرفتم یا اطلاع قبلی میدادم ؟ خوب چند دقیقه وقت داشتم اومدم تالار سی شارپ اما ظاهراً باید در میزدم یا الله میگفتم شما بی ادبی من رو ببخشید . معمولاً از اینجور سوالات در تالارهای فارسی زبان به وفور یافت میشه و باعث تعجب همه میشه !


به نظر منم روش آقاي alimanam هم پيچيده هست و هم بنظر زمان بر و غير اصولي...

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


موفق باشید./

PetekDincos
شنبه 22 مهر 1391, 22:14 عصر
با سلام
دوستان به نظر من روش آقای alimanam نسبت به اجرای چند تا اسکریپت بهتره چون اولا دست برنامه نویس برای تغییرات به طور کامل بازه و دوم اینکه مطمئن تر هست . با تشکر