نمایش نتایج 1 تا 8 از 8

نام تاپیک: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

    سلام دوستان
    من از کدی که برای بکاپ کیری از دیتابیسم استفاده می کنم موقعی که ریستور می شه ساختار دیتابیس رو هم در صورت عوض شدن ساختار (کم و زیاد شدن فیلد ها یا نوع و هر تغییر ساختاری)تغییر می ده .
    از انجای کاربران از دیتابیس قدیمی تر استفاده می کنند و با آپدیت برنامه ممکن هست تو ساختار دیتابیس هم تغییراتی ایجاد بشه. می خوام به نحوی بکاپ تهیه شود که بعدا در صورت ریستور کردن دیتابیس رو به حالت قبلی برنگرداند.
    چطور می تونم این کار رو بکنم؟
    این هم کدی که برای بکاپ گیری استفاده می کنم.

    'پشتیبان گیری از بانک
    Dim shams AsString = shamsi()
    shams = shams.Replace(
    "/", "-")
    Dim str_name_backup AsString = shams & "__Tala.bak"
    Dim DevicePath AsString
    With SaveFileDialog1
    .FileName = str_name_backup
    .DefaultExt =
    "bak"
    .Filter = "DateBase Backup File(*.bak)|*.bak"
    .OverwritePrompt = True
    EndWith
    If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    DevicePath = SaveFileDialog1.FileName
    IfMy.Computer.FileSystem.FileExists(DevicePath) Then Kill(DevicePath)
    con.Close()
    con.Open()
    Dim Srvcon AsNew ServerConnection(con)
    Dim Srv AsNew Server(Srvcon)
    ' Create backup device item for the backup
    Dim bdi AsNew BackupDeviceItem(DevicePath, DeviceType.File)
    ' Create the backup informaton
    Dim Backup AsNew Backup
    Backup.Devices.Add(bdi)
    With Backup
    'Type Of Backup
    .Action = BackupActionType.Database
    .BackupSetDescription =
    "Backup DataBase"
    .BackupSetName = "DB"
    .Database = con.Database.ToString()
    .LogTruncation = BackupTruncateLogType.Truncate
    'Backup.ExpirationDate = New DateTime(2007, 5, 1)
    ' Run the backup
    .SqlBackup(Srv)
    EndWith
    MessageBoxFa.Show("عملیات تهیه فایل پشتیبان به موفقیت انجام شد ", _
    name_me, MessageBoxButtons.OK)
    Else
    MessageBoxFa.Show(" انجام نشد ", name_me, MessageBoxButtons.OK)
    EndIf

  2. #2

    نقل قول: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

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

    در صورتی که بنا به هر دلیلی این اتفاق مسیر نبود شما باید اطلاعات خودت رو از بانک قدیم به بانک جدید Convert کنی معمولا شرکتهای بزرگ که بانک اطلاعاتی نرم افزار های خودشون رو ارتقاء و به روز آوری میکنند و یک نرم افزار جانبی هم برای این تبدیل تهیه میکنند.

    ضمنا به دلیل وجود حساسیت زیاد در ارتقاء برای حفظ اطلاعات کاربر یا مشتری باید در این عمل خیلی با دقت و محطاطانه عمل نمود.
    توصیه من به شما نیز انجام همین convert یا به صورت دستی (با زدن Script بر روی بانک) یا ساخت یک برنامه جانبی برای انجام این امر است.



    موفق باشید

  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

    سلام دوست عزیز
    ممنون از جوابی که دادید. بله حق با شما ست در این مدت چند روزه که تحقیق کردم به حرف شما رسیدم . من فکر می کنم SCRIPT برای من منظور کاری من بهترین روش باشد. منتها نمی دونم چطور باید این کار رو انجام بدم. اگه می شه راهنمایی کنید ممنون می شم.
    در ضمن در این تاپیک ها هم گفتگوهای شده می تونید مطالعه نمایید.
    http://www.barnamenevis.org/sh...810#post840810
    http://www.barnamenevis.org/sh...d=1#post840786

  4. #4

    نقل قول: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

    دوست عزیز

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

    - تغییر پیدا نکردن نوع Data Type در فیلد جدید با قدیم به طور مثال فیلد قدیم حاوی اطلاعات Text و فیلد جدید با Data Type عددی مسلما در هنگام تغییر با خطا مواجه میشوید

    - فیلد های جدید اضافه شده به جدول با ید حتما مقدار null را قبول کنند(چون ردیفهای قبلی این جدول فاقد اطلاعات برای این فیلدها هستند ) مگر با تشخیص برنامه نویس مقادیری به صورت پیش فرض و یا در زمان تبدیل اطلاعات به آنها اضافه گردد.

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

    اما در نهایت اگر تعداد بانکهایی که باید عمل Convert Data بر روی آنها صورت بگیرد کم هست و یا همه آنها توسط شخص شما قرار هست اتفاق بیفتد از Script و اون هم داخل خود محیط Sql انجام گردد. در غیر این صورت یه برنامه جانبی بنویسد. (اما من توصیه میکنم دستی انجام دهید)

    اما نکاتی که من توصیه میکنم زمان تبدیل در نظر بگیرید
    - از بانک قبلی یک نسخه پشتیبان مطمئن تهیه کنید.
    - بانک قدیم و EXE سازگار با آن را نیز به صورت BackUp تهیه کنید
    - عمل Convert را از جداول اطلاعات پایه شروع کنید و به همین ترتیب تا آخرین جدول ادامه دهید.
    - بانک تبدیل شده جدید را با EXE جدید مطابقت بدهید و تست کامل انجام دهید.
    - چنانچه از تست خود مطمئن نیستید هر دو نسخه قدیم و جدید را در اختیار مشتری قرار دهید تا به صورت موازی برای مدتی مشخص ورود اطلاعات کند.

    برای اسکریپت تبدیل هم کافی است یک دستور Insert بنویسد که قسمت آن Values نتیجه Select بانک قدیم شماست (ترتیب فیلد ها در Select رعایت گردد)


    موفق باشید

    از جداول اطلاعات پایه عمل

  5. #5
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

    دوست عزیز سلام
    من می خوام تغییرات را با اسکریپت اعمال کنم. یعنی فایل اسکریپت رو برای کاربر ارسال کنم و خودش بتونه این تغیرات رو اعمال کنه. تو یک قسمت از برنامه ام یک قسمتی رو برای اپدیت دیتابیس در نظر بگیرم و تو اون کاربر بتونه آدرس اسکریپت مورد نظر رو وارد کرده و تغییرات مورد نظر به صورت خودکار انجام بشه. اینطور هر وقت دیتابیس تغییر کرد لازم نیست خودم در محل حاضر بشم.
    نمی دونم درست توضیح دادم یا نه.
    در حال حاضر به صورت دستی این کار رو می کنم. که خیلی هم وقتگیر هست. یعنی می رم پیش کاربر دیتابیسش رو می گیرم و تو sqlmanejment تغییرات لازم رو اعمال می کنم که البته چون الان تعداد کربران من کم هست مهم نیست ولی در درازمدت مشکل ساز خواهد شد.

  6. #6

    نقل قول: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

    برای اسکریپت تبدیل هم کافی است یک دستور Insert بنویسد که قسمت آن Values نتیجه Select بانک قدیم شماست (ترتیب فیلد ها در Select رعایت گردد)



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



    موفق باشی

  7. #7
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

    نقل قول نوشته شده توسط pourang_us مشاهده تاپیک
    هر چند خودم به شخصه این روش رو نمی پسندم اما میتونی این کار رو انجام بدی و توی برنامت یه جایی به اسم دریافت فایل بذاری و بعد Script هات رو به صورت فایل Text برای اون طرف ارسال کنی و اون با دریافت فایل Script شما رو روی بانک اطلاعاتی بزنه
    موفق باشی
    دوست عزیز من نمی دونم چطور باید این کار رو بکنم. اگه بتونید یک مثال بزارید ممنون می شم. یک برنامه کوچیک که تو کدش یک اسکریپت رو اجرا کنه یک جدول رو به دیتابیس موجود اضافه کنه. اگه امکانش برای شما باشه که همچین برنامه ای بزارید ممنون می شم.

  8. #8

    نقل قول: گرفتن بکاپ از دیتا بیس (فقط داده ها نه ساختار)

    امیدوارم کارت رو حل کنه


    موفق باشید
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •