نموذج برنامج نصي SQL لضغط ونقل ملف النسخ الاحتياطي لقاعدة البيانات
-
02-07-2019 - |
سؤال
كنت أبحث عن نموذج برنامج نصي لـ SQL لضغط ملف النسخ الاحتياطي لقاعدة البيانات (.bak) ونقله إلى موقع بعيد.يرجى مشاركتها إذا كان لديك معك.
المحلول
يمكنك استخدام xp_cmdshell لاستدعاء أوامر الضغط والنسخ.في العينة هنا، أستخدم سطر أوامر Winzip (للضغط/فك الضغط) وxcopy لنقل الملفات.
EXEC master..xp_cmdshell 'C:\"Program Files"\WinZip\wzzip C:\Database.bak.zip C:\Database.bak';
EXEC master..xp_cmdshell 'C:\"Program Files"\WinZip\wzunzip -o "C:\Database.bak.zip" "C:\Database"';
EXEC master..xp_cmdshell 'xcopy "C:\Database.bak.zip" "\\networkshare\Backups" /Y'
نصائح أخرى
يعد xp_cmdshell إحدى الطرق، على الرغم من أنه ليس مثاليًا نظرًا لأن تمكينه يجعل الخادم أقل أمانًا.
مشروعي مفتوح المصدر، النسخ الاحتياطي المضغوط لخادم SQL, ، يفعل ما تبحث عنه في خطوة واحدة:
msbp.exe backup "db(database=model)" "zip64" "local(path=\\server\share\path\model.full.bak.zip)"
يعد تثبيت SQL Server Compressed Backup مجرد نشر "xcopy" - لا يوجد شيء لتثبيته/إلغاء تثبيته، وهو مثالي إذا كنت بحاجة إلى القيام بذلك مرة واحدة فقط.
يستخدم zip64 نظرًا لأن تنسيق zip القياسي له حد 4 جيجابايت.تنسيقات الضغط البديلة المتاحة هي gzip وbzip2 والتي ليس لها حدود.
لماذا لا تستخدم مثل هذه الأدوات البسيطة مثل SqlBackupAndFtp؟إنهم يفعلون بالضبط ما تحتاجه (النسخ الاحتياطي لـ SQL + الانتقال إلى موقع بعيد) من خلال واجهة بسيطة ولا تحتاج إلى كتابة أي نصوص برمجية.