ورود

View Full Version : ( اضافه/ویرایش/حذف ) فیلد یا جدول به Database .. بدون صدمه زدن به داده‌های از قبل وارد شده



gilsoft
پنج شنبه 28 فروردین 1393, 00:09 صبح
سلام دوستان

متاسفانه هنوز نرم‌افزارم بطور کامل آماده نشده ! .. و مجبور شدم که به مشتری ( بصورت ناقص یا همان Beta ) تحویل بدم ... :ناراحت: :افسرده:

مطمئنم که در ساختار جداول Database تغییرات و یا اضافاتی خواهم داشت ( از آن طرف مشتری هم مشغول وارد کردن اطلاعات اصلی خود می‌باشد ) :گیج:

حال سئوالم اینه که : آیا ( با در نظر گرفتن اینکه با اطلاعات وارده توسط مشتری لطمه‌ای وارد نشود ) راهی هست که بتونم در سیستم مقصد (‌ یا مشتری ) ساختار Databaseام رو Update کنم ؟ ( یعنی فیلدهای جدیدی در جداول موجود اضافه کنم .. یا جدول جدیدی به Database مربوطه اضافه کنم بدون اینکه به اطلاعات مشتری آسیبی برسد ! ) :متفکر: ( مانند ReDim Preserve در VB.NET )

امیدوارم که تونسته باشم منظورم ( یا خواسته‌ام ) رو برسونم ....

parvizwpf
پنج شنبه 28 فروردین 1393, 04:22 صبح
برنامهتون رو با چی نوشتید؟ ببینید یک روز این حرفارو نداره که به مشتری بگید کار نکنه بعد برید اطلاعاتو دیتابیسشو بگیرید و با دیتبیس خودتون یکی کنید و تمام

gilsoft
پنج شنبه 28 فروردین 1393, 07:53 صبح
برنامهتون رو با چی نوشتید؟ ببینید یک روز این حرفارو نداره که به مشتری بگید کار نکنه بعد برید اطلاعاتو دیتابیسشو بگیرید و با دیتبیس خودتون یکی کنید و تمام

سلام دوست عزیز

برنامه با VB.NET.2010 و SQL.Server.2008 نوشته شده

مسئله یک روز / دو روز .. یک بار / دو بار نیست ! من تقریبا هر شب که مقداری از برنامه رو تکمیل میکنم .. فردا صبحِ‌ش باید ببرم نزد مشتری و هم نرم‌افزار و هم ساختار جداول رو Update کنم .. ( در واقع مشتری همون شرکت‌ایه که من توش کار مي‌کنم ! )

به علت پاره‌ای از مسائل نمی‌تونم تو شرکت برنامه‌نویسی کنم .. :ناراحت: :افسرده:

از طریق همین شرکت به 3تا شرکت دیگه هم فروختم .. جمعا 4تا شرکت .. که هر شرکت 2تا دفتر (Database ) داره ( یکی اصلی و یکی رسمی ) .. با این حساب می‌شود 8تا Database !

من میخوام با نوشتن یه چیزی مثل Stored Procedure در هر کدام از Serverها ( مجموعا 4تا سرور ) به راحتی این تغییرات صورت بگیره .. ( ناگفته نماند با 2تا از شرکت‌ها بصورت Remote از طریق TeamViewer ارتباط دارم )

مطمئنم که یه راهی هست : اگه نباشه .. نرم‌افزارهایی مثل نرم‌افزار هلو .. چگونه Databaseهای خودشونو Update ميکنن ؟! :متفکر:

طبق مطالعات و بررسی‌های من .. با Alter Table مي‌تونم ساختار جداول رو تغییر بدم .. اما نميدونم چجوری باید اطلاعات جداول رو حفظ کنم ؟ :گیج: :متفکر:

اینم تصویر صفحه اصلی نرم‌افزار :
118071

محمد آشتیانی
پنج شنبه 28 فروردین 1393, 10:40 صبح
سلام
بررسی های شما درسته ، با دستور ALTER TABLE اطلاعات قبلی از بین نمیره
مثل این


USE YourDB
ALTER TABLE dbo.TableName ADD newclm VARCHAR(20) NULL ;

یه فیلد به جدول موجود اضافه میکنه ،البته با اطلاعات قبلی
البته یه نکته رو مد نظر داشته باشید ، اینکه اگر خواستید بنا بر نیاز مثلا طول یک فیلد Char رو که قبلا 20 بوده به 15 کاهش بدید ، مهمه که تو اون فیلد قبلا رشته ای با طول بیشتر از 15 ثبت نشده باشه وگرنه به مشکل بر خواهید خورد.


موفق باشید

alimanam
پنج شنبه 28 فروردین 1393, 11:16 صبح
با سلام

همانطور که دوست خوبمون گفتن با کدی که ذکر کردن میتونین یک فیلد به تیبلی که قبلاً وجود داشته اضافه کرد و توضیحی هم که دادن کاملا درسته , برای مابقی کارها ( حذف , اضافه , تیبل هم دستورات sql کفایت میکنه . به لینک زیر مراجعه کنین توضیح داده شده البته با استفاده از فضای نام Microsoft.SqlServer.Smo این کار رو کرده . در خاتمه یادآور میشم حفظ یکپارچکی دیتابیس رو هم مد نظر داشته باشید مخصوصاً اگر روابطی بین فیلدهای ویرایش شده بوجود میاد .

http://technet.microsoft.com/en-us/library/ms162203%28v=sql.90%29.aspx (http://technet.microsoft.com/en-us/library/ms162203%28v=sql.90%29.aspx)

موفق باشید./

bahman123456
پنج شنبه 28 فروردین 1393, 23:01 عصر
با سلام
از چه کامپوننتی جهت طراحی استفاده کرده اید؟

حمیدرضاصادقیان
جمعه 29 فروردین 1393, 03:06 صبح
سلام.
شما وقتی Database رو تغییر میدین ، تغییرات رو در قالب یک script باید نگهداری کنید.
فقط در این Script باید توجه داشته باشین که خودتون داده ها رو بروز کنید.اگر فیلدی اضافه می کنید مقدار پیش فرض در نظر بگیرید.
اگر یک فیلد به یک فیلد دیگه منتقل میشه مراحل کار رو به دقت انجام بدید.
درنهایت این Script روی سیستم مشتری اجرا میشه و تغییرات صورت میگیره و مشتری هم کارش رو ادامه میده.
اگر تغییرات زیاد هست و نیاز به تبدیل اطلاعات هست. بهتره از SSIS استفاده کنید که خوب البته پیچیدگی خاص خودش رو داره و اگر خیلی کار گسترده نیست نیازی به استفاده از اون نیست.

gilsoft
جمعه 29 فروردین 1393, 14:20 عصر
با سلام
از چه کامپوننتی جهت طراحی استفاده کرده اید؟

سلام دوست عزیز

از کامپوننت DevComponents.DotNetBar.11.7.0.0 استفاده کردم ....

gilsoft
چهارشنبه 17 اردیبهشت 1393, 14:34 عصر
سلام دوستان

همانطور که میدانید دستور ALTER به انتهای ستونهای یک جدول ... یک ستون اضافه می‌کند ....

حالا من میخوام بدونم که : آیا میشه مابین دو ستون یک جدول ... یک ستون جدید درج کرد ؟ :متفکر:

parvizwpf
چهارشنبه 17 اردیبهشت 1393, 16:16 عصر
http://stackoverflow.com/questions/5327545/adding-column-between-two-other-columns-in-sql-server

gilsoft
چهارشنبه 17 اردیبهشت 1393, 20:01 عصر
http://stackoverflow.com/questions/5327545/adding-column-between-two-other-columns-in-sql-server

سلام دوست عزیز

بابت جوابتون ممنونم .. اما من چیزی ازش سر در نیاوردم :افسرده:

محمد آشتیانی
پنج شنبه 18 اردیبهشت 1393, 11:37 صبح
سلام
جناب محرابی البته بنده خودم جواب رو نمیدونم اما تو لینکی که دوستمون دادن نتیجه اینه که خیر نمیشه اینکارو کرد
اما خب فرقی نداره که ، شما تو کوئریت ترتیب دلخواهت رو برای نمایش میتونی اعمال کنی.


موفق باشید.