Afin d'éviter de perdre/d'endommager accidentellement les procédures stockées que vous avez travaillé si dur pour créer, ou si vous souhaitez restaurer une version précédente des procédures stockées, cela constitue une méthode efficace pour sauvegarder automatiquement les procédures stockées dans l'emplacement spécifié. base de données.
1. Créez la table de données StoredProceduresBackup sur une base de données spécifique (recommandée pour être la base de données principale de SQL Server) pour enregistrer les procédures stockées de sauvegarde.
SI OBJECT_ID('StoredProceduresBackup') N'EST PAS NULL
DROP TABLE StoredProceduresBackup
GO
CREATE TABLE StoredProceduresBackup
(
AutoID INTEGER IDENTITY(1,1) PRIMARY KEY,
InsertDate DATETIME DEFAULT GETDATE(),
DatabaseName VARCHAR(50),
ProcedureName VARCHAR(50),
ProcedureText VARCHAR(4000)
)
GO
2. Créez une procédure stockée nommée usp_ProceduresVersion. Cette procédure stockée est utilisée pour sauvegarder les procédures stockées qui doivent être sauvegardées dans la table de données créée ci-dessus.
Parmi elles, les tables système sysobjects et syscomments sont principalement accessibles :
(1) table système sysobjects
Contient une ligne pour chaque objet (contrainte, valeur par défaut, journal, règle, procédure stockée, etc.) créé dans une base de données uniquement, cette table comprend une ligne pour chaque objet temporaire.
(2) table système syscomments
Contient des entrées pour chaque vue, règle, valeur par défaut, déclencheur, contrainte CHECK, contrainte DEFAULT et procédure stockée. La colonne de texte contient les instructions de définition SQL d'origine, dont la taille est limitée à 4 Mo maximum. .
(3) script source de la procédure stockée.
/*
Nom : usp_ProceduresVersion
Description : Sauvegarde des procédures stockées définies par l'utilisateur
Auteur : Rickie
Journal des modifications : NON
Description Date de modification par
Procédure de création 27/08/2004 Rickie
*/
CREATE PROCEDURE usp_ProceduresVersion @DatabaseName NVARCHAR(50)
AS
SET NOCOUNT ON
--Cela contiendra la chaîne dynamique
DECLARE @strSQL NVARCHAR(4000)
--Définir la chaîne
--Uniquement les procédures stockées
SET @strSQL = 'INSERT INTO master.dbo.StoredProceduresBackup(
DatabaseName,ProcedureName,ProcedureText )
SELECT ''' + @DatabaseName + ''', so.name, sc.text
FROM ' + @DatabaseName + '.dbo.sysobjects donc
INNER JOIN ' + @DatabaseName + '.dbo.syscomments sc
ON so.id = sc.id
OÙ so.type = ''p''' + ' et so.status>0
Commander par so.id '
--Exécutez la chaîne
EXEC dbo.sp_executesql @strSQL
GO
3. Créez le travail et exécutez la procédure stockée ci-dessus
pour créer le travail sur SQL Server et définissez le plan d'exécution afin que les procédures stockées de la base de données spécifiée puissent être automatiquement sauvegardées dans la table de données ci-dessus.
D'accord. C'est tout. Si vous avez des questions à ce sujet, veuillez me contacter à [email protected] . Bonne chance.