Je viens de mettre en œuvre l'exécution parallèle de l'OLA pour les sauvegardes, les contrôles d'intégrité et la maintenance de l'index. Tout semble courir super mais je vois sql_message_id 50000
Dans la table sysjobhistory
pour les nouvelles exécutions. Je vois aussi [SQLSTATE 01000]
sur chaque ligne des fichiers de sortie de travail. Est ce comportement normal? Je n'arrive pas à trouver une documentation approfondie en ligne.
Le message 50000 dans msdb.dbo.sysjobhistory est destiné.
Participez à la procédure d'optimisation de l'indice d'Ola Hallengren: [dbo].[IndexOptimize]
, Une partie des contrôles d'intégrité: [dbo].[DatabaseIntegrityCheck]
Ou une partie de la procédure de sauvegarde: [dbo].[DatabaseBackup]
, La même RAISERROR()
Les déclarations seront affichées:
SET @StartMessage = 'Date and time: ' + CONVERT(nvarchar,@StartTime,120)
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Server: ' + CAST(SERVERPROPERTY('ServerName') AS nvarchar(max))
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Version: ' + CAST(SERVERPROPERTY('ProductVersion') AS nvarchar(max))
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Edition: ' + CAST(SERVERPROPERTY('Edition') AS nvarchar(max))
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Platform: ' + @HostPlatform
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Procedure: ' + QUOTENAME(DB_NAME(DB_ID())) + '.' + QUOTENAME(@SchemaName) + '.' + QUOTENAME(@ObjectName)
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Parameters: ' + @Parameters
SET @StartMessage = REPLACE(@StartMessage,'%','%%')
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Version: ' + @VersionTimestamp
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Source: https://ola.hallengren.com' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@StartMessage,10,1) WITH NOWAIT
La fonction RAISERRROR()
'S doit être exécutée lorsque la procédure est exécutée.
En regardant dans l'histoire, nous voyons la "erreur" affichée:
select message From msdb..sysjobhistory
where sql_message_id =50000
Résultat
Executed as user: DOMAIN\test. ...0000) Server: test [SQLSTATE 01000] (Message 50000) Version: 12.0.5546.0 [SQLSTATE 01000] (Message 50000) ...
Avec les mêmes informations de serveur et de version définies dans les exemples précédents T-SQL.
Pourquoi l'erreur commence à 50000?
Il commence à 50000, car à partir de 50000 et vers le haut, on peut définir les erreurs générées par l'utilisateur.
Pourquoi y a-t-il RoisError () dans les procédures?
Mon opinion est que la fonction RAISERRROR()
est ajoutée pour ajouter des informations supplémentaires à l'historique DMV, pour savoir ce qui est exécuté et avoir des informations supplémentaires sans être en désordre. Cela vous donne le contrôle sur ce qui sera montré.
Je laisserai plus de raisonnement approfondi à Ola lui-même.
Surfériement, l'historique est ajouté au moniteur d'activité de la tâche SSMS que nous connaissons et utilisons:
Donc, pour répondre à la question, il est codé dans le processus avec le raisonnement derrière elle.
RAISError () 50000 Exemple par défaut
Vous ne pouvez générer que des erreurs personnalisées avec RAISErrror lors de l'utilisation d'un numéro d'erreur à partir de 50000.
Test avec un travail, sans numéro d'erreur spécifique:
Résultat:
Commence à 50000.