دسته بندی ها
14:35 1400/08/02

خطا در ری استور کردن دیتابیس SQL از ورژن بالاتر به پایینتر (2008 → 2017)

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2957
2 نظر
saedbfd : کلا اینکه یک دیتابیس با ورژن بالاتر رو بیارید روی یک دیتابیس با ورژن پایین تر به صورت معمول امکان پذیر نیست. یکی از روشهاش همون ایجاد اسکریپت هست ولی خب وقتی شما از ساختار دیتابیس و اطلاعات اسکریپت می سازید برای ایجاد دیتابیس به این روش هم خطا زیاد پیش میاد. کلا اگر دیتابیس شما بزرگ باشه کار سختیه این کار

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 06:31 1400/08/02
mojtabahakimian : چیزی مد نظرتون نیست ؟, چون در حالت واقعی دیتا بیس همینه ! اطلاعات زیاده و همه شرکت ها حاضر نیستند هرکاری ما میگم بکنند

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 10:24 1400/08/02
هوش مصنوعی

پاسخ هوش مصنوعی

انتقال دیتابیس از یک نسخه بالاتر به نسخه پایین تر در SQL Server معمولاً چالش هایی را ایجاد می کند. از آنجا که SQL Server 2017 دارای ویژگی ها و قابلیت هایی است که در SQL Server 2008 موجود نیست، نمی توان به سادگی دیتابیس را به نسخه پایین تر منتقل کرد. در ادامه چند روش دیگر را بررسی می کنیم که می تواند به شما در این زمینه کمک کند:

1. استفاده از Export و Import: به جای استفاده از Generate Scripts، می توانید داده ها را به یک فرمت مانند CSV یا Excel صادر کنید و سپس آن ها را در دیتابیس 2008 وارد کنید.

-- مثال: استفاده از BULK INSERT یا معادل آن برای وارد کردن داده ها
BULK INSERT YourTable
FROM 'C:\path\to\your\datafile.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');

2. استفاده از Integration Services (SSIS): ایجاد یک پروژه SSIS می تواند کمک کند تا داده ها به راحتی از یک دیتابیس به دیتابیس دیگر منتقل شوند. این ابزار از قابلیت های بیشتری برای مدیریت نوع داده ها و روند انتقال استفاده می کند.

3. تنظیمات Compatibility Level: اگر هنوز به ویژگی های خاصی از SQL Server 2017 نیاز دارید، می توانید در SQL Server 2008R2 سطح سازگاری (Compatibility Level) را تغییر دهید، اما این ممکن است به تنهایی کافی نباشد و به درستی کار نکند.

4. استفاده از Backup و Restore: اگر قصد داشتید تمام ساختار و داده ها را با هم منتقل کنید، می توانید از Backup در SQL Server 2017 استفاده کرده و سپس با ابزار SQL Server Management Studio (SSMS) در SQL Server 2008R2 آن را بازیابی کنید. توجه داشته باشید که این روش معمولاً فقط در نسخه های مشابه کار می کند.

در نهایت، اگر هیچ یک از این روش ها موثر نبود، می توانید بر روی ایجاد اسکریپت های سفارشی برای ایجاد جداول و وارد کردن داده ها تمرکز کنید، با این حال این گزینه زمان بر خواهد بود. همچنین، می توانید از خدمات مشاوره ای متخصصان SQL Server بهره مند شوید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : mojtabahakimian 21:07 1400/08/03

مهندسان عزیز حلش کردم :

دو راه هست 

راه حل اول (پیشنهادی) :

1- یک دیتابیس خالی ولی همسان از لحاظ ساختاری , با استفاده از اسکریپت, روی SQL ورژن 2008 ساختم.

2- بعدش چون SQL Server 2017 یکسری تفاوت های ساختاری داره در مقایسه با SQL Server 2008R2, اومدم با استفاده از ابزار های قدرتمند داخل برنامه Red Gate استفاده کردم به این شکل که اول با ابزار SQL Compare ساختار جدولیش رو یکسان سازی زدم (جهت اطمینان که Table ها و ساختارشون یکسان هست). در ادامه

3- با ابزار SQL Data Compare  اومدم اطلاعات دیتابیس 2017 رو به 2008 Deploy کردم (کپی دیتا های دیتابیس 2017 روی 2008) و درست شد.

 

راه حل دوم : 

1- طبق تصویر سوالم در بالا اسکریپت رو از دیتابیس بسازید.

2- ابزار VS Code دانلود و نصب کنید.

3- بعد از اینکه اسکریپت ساخته شد چون حجمش بالاست احتمالا با خطا مواجه میشید پس باید با نرم افزار Vs Code اون فایل script.sql رو باز کنید و بعد اینکه کامل باز شد تیکه به تیکش رو داخل New Query در SQL 2008 کپی و پیست کنید و بعد از اینکه تا انتهای فایل باز شده در VS Code رفتید و این کار انجام شد 

4- کویری رو اجرا کنید.

در کل ابزار Red Gate خیلی کار رو راحت میکنه و بهتره

موفق باشید.

ویرایش شده در دوشنبه 3 آبان 1400 ساعت 21:17:25
به این پاسخ امتیاز بدهید    5
امتیاز: 155 رتبه: 10
3 نظر
saedbfd : تشکر بابت به اشتراک گذاشتن نتیجه کارتون. عالی بود.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 09:17 1400/08/03
fateme : روشی که گفتید رو تست نکردم ولی یک لایک بابت اشتراک گذاری تجربه کارتون بهتون دادم. متاسفانه خیلی کاربرا میان سوال میکنن کلی جواب براشون میذاریم آخر کار اصلا نمیان بگن که تونستن به پاسخ برسن یا نه و اگر به پاسخ رسیدن چه کاری کردن.

امتیاز کاربر : 1637   رتبه کاربر : 2   تاریخ ثبت : 09:24 1400/08/03
ghlvsh : امکانش هست نحوه کار با red gate رو دقیق تر توضیح بدید؟ چون من هر چقدر امتحان می کنم خطا میده؟ فایل خروجی میده یا خودش روی ssms تغییرات رو اعمال می کنه؟

امتیاز کاربر : 0   رتبه کاربر : 7040   تاریخ ثبت : 12:35 1403/04/04
ادامه نظرات ...
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود