خطا در ری استور کردن دیتابیس SQL از ورژن بالاتر به پایینتر (2008 → 2017)
من دوتا دیتابیس دارم یکی روی SQL 2017 و دیگری روی SQL 2008R2 هردو این ها از لحاظ ساختاری عین هم هستند , فقط اطلاعات آنها متفاوت هست
میخوام دیتابیس 2017 رو بیارم روی دیتابیس 2008 , از دو روش استفاده کردم که هردو به نتیجه ای نرسید !
1- استفاده از Generate Script به شکل زیر :
بعد از ساخت اسکریپت که حجمش حدودا 2.5 گیگابایت شده بود اومدم اون رو توی SQL Server 2008R2 باز کنم که این خطا رو داد ←
توی اینترنت دیدم گفته بودند از cmd استفاده کنم برای اجرای اسکریپت ←
sqlcmd -S .\MYSQLSERVER2008 -U MyUsername -P MyPassword -i C:\Database\script.sql
که اینهم با خطا مواجه شد بنابراین رفتم سراغ یه چیزه دیگه .
2- استفاده از Import Data به شکل زیر :
ودر نهایت اینهم با خطا مواجه شد ! ↓
آیا راهی به غیر از اینها که بشه برای این موضوع پیاد کرد, وجود داره ؟ یا این مشکل رو بشه حل کرد ؟
باتشکر
پاسخ هوش مصنوعی
انتقال دیتابیس از یک نسخه بالاتر به نسخه پایین تر در 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 بهره مند شوید.
مهندسان عزیز حلش کردم :
دو راه هست
راه حل اول (پیشنهادی) :
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 خیلی کار رو راحت میکنه و بهتره
موفق باشید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- جابه جایی سطر و ستون در Sql Server
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server
- کار با تاریخ شمسی وساعت (استفاده از توابع )