لتجنب فقدان/إتلاف الإجراءات المخزنة التي عملت بجد لإنشائها عن طريق الخطأ، أو إذا كنت تريد الاستعادة إلى إصدار سابق من الإجراءات المخزنة، فإن هذا يوفر طريقة فعالة لعمل نسخة احتياطية تلقائيًا من الإجراءات المخزنة في الملف المحدد قاعدة البيانات.
1. قم بإنشاء جدول البيانات StoredProceduresBackup على قاعدة بيانات محددة (يوصى بأن تكون قاعدة البيانات الرئيسية لـ SQL Server) لحفظ النسخة الاحتياطية من الإجراءات المخزنة.
إذا لم يكن OBJECT_ID('StoredProceduresBackup') فارغًا
إسقاط الجدول المخزن الإجراءاتالنسخ الاحتياطي
GO
إنشاء جدول StoredProceduresBackup
(
معرف عدد صحيح للمعرف التلقائي (1,1) المفتاح الأساسي،
تاريخ الإدخال والوقت الافتراضي GETDATE()،
اسم قاعدة البيانات VARCHAR(50)،
اسم الإجراء VARCHAR(50)،
نص الإجراء VARCHAR(4000)
)
GO
2. قم بإنشاء إجراء مخزن باسم usp_ProceduresVersion يُستخدم هذا الإجراء المخزن لعمل نسخة احتياطية من الإجراءات المخزنة التي تحتاج إلى نسخ احتياطي في جدول البيانات الذي تم إنشاؤه أعلاه.
من بينها، يتم الوصول بشكل أساسي إلى جداول نظام sysobjects وsyscomments:
(1) جدول نظام sysobjects
يحتوي على صف واحد لكل كائن (القيد، الافتراضي، السجل، القاعدة، الإجراء المخزن، وما إلى ذلك) الذي تم إنشاؤه داخل قاعدة بيانات في tempdb فقط، يتضمن هذا الجدول صفًا لكل كائن مؤقت.
(2) جدول نظام syscomments
يحتوي على إدخالات لكل عرض، وقاعدة، وافتراضي، ومشغل، وقيد التحقق، وقيد افتراضي، وإجراء مخزن. يحتوي عمود النص على عبارات تعريف SQL الأصلية، والتي تقتصر على الحد الأقصى لحجم 4 ميغابايت .
(3) النص المصدري للإجراء المخزن.
/*
الاسم: usp_ProceduresVersion
الوصف: عمل نسخة احتياطية من الإجراءات المخزنة التي حددها المستخدم
المؤلف:سجل التعديل
Rickie
: NO
الوصف تاريخ التغيير حسب
إجراء الإنشاء 27/08/2004 ريكي
*/
إنشاء إجراء usp_ProceduresVersion @DatabaseName NVARCHAR(50)
كما
تم تعيينه على NOCOUNT
--سيحتوي هذا على السلسلة الديناميكية
DECLARE @strSQL NVARCHAR(4000)
- تعيين السلسلة
- الإجراءات المخزنة فقط
SET @strSQL = 'INSERT INTO master.dbo.StoredProceduresBackup(
DatabaseName,ProcedureName,ProcedureText )
SELECT ''' + @DatabaseName + ''', so.name, sc.text
FROM ' + @DatabaseName + '.dbo.sysobjects so
INNER JOIN' + @DatabaseName + '.dbo.syscomments sc
ON so.id = sc.id
WHERE so.type = ''p''' + ' and so.status>0
اطلب بواسطة so.id '
- قم بتنفيذ السلسلة
EXEC dbo.sp_executesql @strSQL
GO
3. قم بإنشاء المهمة وتنفيذ الإجراء المخزن أعلاه
لإنشاء المهمة على SQL Server وتعيين خطة التشغيل بحيث يمكن نسخ الإجراءات المخزنة لقاعدة البيانات المحددة احتياطيًا تلقائيًا إلى جدول البيانات أعلاه.
حسنا. إذا كانت لديك أي أسئلة حول هذا الموضوع، يرجى الاتصال بي على [email protected] ، أتمنى لك حظًا سعيدًا.