web-dev-qa-db-fra.com

HALLENGREN @DatabasesInparallall SQL_Message_ID 50000 dans la table Sysjobhistory

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.

3
Jeff Gerew

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: enter image description here

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:

enter image description here

Résultat:

enter image description here

Commence à 50000.

3
Randi Vertongen