Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Message d'information retourné par l'engin SQL lors du backup

11 réponses
Avatar
Karine
Bonjour,
J'ai créé une stored procedure qui me permet de lancer un backup d'une base
de données X (SQL 2005 Express).

Extrait de ma stored procedure:
...
SET @SQL = N'BACKUP DATABASE [' + @DatabaseName + '] TO DISK = ''' +
@BackupFileName + ''''
BEGIN TRY
EXEC(@SQL)
END TRY
BEGIN CATCH
-- Erreur durant le backup
SELECT @ErrorMsg = ErrorMessage, @ErrNo = ErrorNumber FROM
dbo.fnPrintError()
SET @Output = 'Full backup of database ' + @DatabaseName + ' failed with
error : ' + CHAR(10) + @ErrorMsg
PRINT @Output
END CATCH
...

Le backup fonctionne bien, toutefois, j'ai le message suivant qui est
retourné suite à l'exécution de la commande BACKUP DATABASE :

Processed 584 pages for database 'ServoxTE', file 'ServoxTE_Data' on file 7.
Processed 1 pages for database 'ServoxTE', file 'ServoxTE_Log' on file 7.
BACKUP DATABASE successfully processed 585 pages in 1.121 seconds (4.275
MB/sec).

J'ai donc 2 questions:
1) Existe-t-il un moyen de ne pas afficher ce message d'information puisque
de toute façon, je gère les erreurs dans sa stored procedure?
2) Encore mieux, existe-t-il un moyen de mettre ce message d'information
dans une variable? Dans mon exemple ci-dessus, la variable @Output contient
la description de l'erreur en cas d'erreur (géré par ma fonction
fnPrintError). J'aimerais qu'elle contienne le message d'information
retourné par l'engin SQL si le backup a bien fonctionné.

Merci de votre aide

10 réponses

1 2
Avatar
SQLpro [MVP]
Salut,

Karine a écrit :
Bonjour,
J'ai créé une stored procedure qui me permet de lancer un backup d'une base
de données X (SQL 2005 Express).

Extrait de ma stored procedure:
...
SET @SQL = N'BACKUP DATABASE [' + @DatabaseName + '] TO DISK = ''' +
@BackupFileName + ''''
BEGIN TRY
EXEC(@SQL)
END TRY
BEGIN CATCH
-- Erreur durant le backup
SELECT @ErrorMsg = ErrorMessage, @ErrNo = ErrorNumber FROM
dbo.fnPrintError()
SET @Output = 'Full backup of database ' + @DatabaseName + ' failed with
error : ' + CHAR(10) + @ErrorMsg
PRINT @Output
END CATCH
...




As tu essayé en mettant RETURN avant le END TRY ?

Sinon essaye de capturer ce n° de message et dans le cas ou c'est bien
celui là ne pas "dérouler " le code d'erreur.

>


Le backup fonctionne bien, toutefois, j'ai le message suivant qui est
retourné suite à l'exécution de la commande BACKUP DATABASE :

Processed 584 pages for database 'ServoxTE', file 'ServoxTE_Data' on file 7.
Processed 1 pages for database 'ServoxTE', file 'ServoxTE_Log' on file 7.
BACKUP DATABASE successfully processed 585 pages in 1.121 seconds (4.275
MB/sec).

J'ai donc 2 questions:
1) Existe-t-il un moyen de ne pas afficher ce message d'information puisque
de toute façon, je gère les erreurs dans sa stored procedure?
2) Encore mieux, existe-t-il un moyen de mettre ce message d'information
dans une variable? Dans mon exemple ci-dessus, la variable @Output contient
la description de l'erreur en cas d'erreur (géré par ma fonction
fnPrintError). J'aimerais qu'elle contienne le message d'information
retourné par l'engin SQL si le backup a bien fonctionné.



certaines fonctions supplémentaires permettent d'obtenir des
informations sur l'erreur génératrice de la levée d'exception :
ERROR_NUMBER le numéro de l'erreur (vue sys.messages dans master).
ERROR_SEVERITY le niveau de sévérité
ERROR_STATE le niveau d'état de l'erreur
ERROR_PROCEDURE le nom de la procédure stockée ou du trigger dans
laquelle l'exception s'est produite
ERROR_LINE le numéo de la ligne ou s'est produite l'erreur
ERROR_MESSAGE le message de l'erreur avec les emplacements de pramètres

Merci de votre aide





A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Karine
Merci de votre aide.

C'était justement ma 2eme question, comment capturer le message
d'information retourné par l'engin SQL?
C'est exactement ce que j'essaie de faire, sans succès.
RETURN n'a rien changé malheureusement.
Il y a sûrement un moyen de capturer ces messages d'information!

Pour ce qui est de ERROR_MESSAGE et ERROR_NUMBER, ces variables sont vides
car le backup n'est pas en erreur, il retourne seulement un message comme
quoi le backup a fonctionné.
Lorsque je vérifie si un backup est valide, l'engin me retourne le message
suivant : The backup set on file 1 is valid.
Ce serait vraiment bien de pouvoir capturer ces messages dans une
variable...

Quelqu'un a une idée?
Merci

"SQLpro [MVP]" wrote in message
news:
Salut,

Karine a écrit :
Bonjour,
J'ai créé une stored procedure qui me permet de lancer un backup d'une
base de données X (SQL 2005 Express).

Extrait de ma stored procedure:
...
SET @SQL = N'BACKUP DATABASE [' + @DatabaseName + '] TO DISK = ''' +
@BackupFileName + ''''
BEGIN TRY
EXEC(@SQL)
END TRY
BEGIN CATCH
-- Erreur durant le backup
SELECT @ErrorMsg = ErrorMessage, @ErrNo = ErrorNumber FROM
dbo.fnPrintError()
SET @Output = 'Full backup of database ' + @DatabaseName + ' failed
with error : ' + CHAR(10) + @ErrorMsg
PRINT @Output
END CATCH
...




As tu essayé en mettant RETURN avant le END TRY ?

Sinon essaye de capturer ce n° de message et dans le cas ou c'est bien
celui là ne pas "dérouler " le code d'erreur.

>


Le backup fonctionne bien, toutefois, j'ai le message suivant qui est
retourné suite à l'exécution de la commande BACKUP DATABASE :

Processed 584 pages for database 'ServoxTE', file 'ServoxTE_Data' on file
7.
Processed 1 pages for database 'ServoxTE', file 'ServoxTE_Log' on file 7.
BACKUP DATABASE successfully processed 585 pages in 1.121 seconds (4.275
MB/sec).

J'ai donc 2 questions:
1) Existe-t-il un moyen de ne pas afficher ce message d'information
puisque de toute façon, je gère les erreurs dans sa stored procedure?
2) Encore mieux, existe-t-il un moyen de mettre ce message d'information
dans une variable? Dans mon exemple ci-dessus, la variable @Output
contient la description de l'erreur en cas d'erreur (géré par ma fonction
fnPrintError). J'aimerais qu'elle contienne le message d'information
retourné par l'engin SQL si le backup a bien fonctionné.



certaines fonctions supplémentaires permettent d'obtenir des informations
sur l'erreur génératrice de la levée d'exception :
ERROR_NUMBER le numéro de l'erreur (vue sys.messages dans master).
ERROR_SEVERITY le niveau de sévérité
ERROR_STATE le niveau d'état de l'erreur
ERROR_PROCEDURE le nom de la procédure stockée ou du trigger dans laquelle
l'exception s'est produite
ERROR_LINE le numéo de la ligne ou s'est produite l'erreur
ERROR_MESSAGE le message de l'erreur avec les emplacements de pramètres

Merci de votre aide



A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************


Avatar
Med Bouchenafa
SQL Server est fondamentalement une application Client Serveur.
Lorsque la partie Cliente envoie une commande, du style que tu cites, à la
partie Serveur, cette dernière execute la commande et répond toujours avec un
message d'information.
Il appartient toujours à la partie Cliente d'afficher ou pas ce message
d'information.
Dans ton cas, je dirais que cela dépend du Client que tu utilises pour
exécuter cette commande.
Conçus, avant tout, comme des outils d'administration, les outils Microsoft
affichent toujours ces messages d'information.
Si tu tu utilses ton propre client, il te sera tout à fait possible
d'ignorer ce message


--
Bien Cordialement
Med Bouchenafa


"Karine" wrote:

Bonjour,
J'ai créé une stored procedure qui me permet de lancer un backup d'une base
de données X (SQL 2005 Express).

Extrait de ma stored procedure:
....
SET @SQL = N'BACKUP DATABASE [' + @DatabaseName + '] TO DISK = ''' +
@BackupFileName + ''''
BEGIN TRY
EXEC(@SQL)
END TRY
BEGIN CATCH
-- Erreur durant le backup
SELECT @ErrorMsg = ErrorMessage, @ErrNo = ErrorNumber FROM
dbo.fnPrintError()
SET @Output = 'Full backup of database ' + @DatabaseName + ' failed with
error : ' + CHAR(10) + @ErrorMsg
PRINT @Output
END CATCH
....

Le backup fonctionne bien, toutefois, j'ai le message suivant qui est
retourné suite à l'exécution de la commande BACKUP DATABASE :

Processed 584 pages for database 'ServoxTE', file 'ServoxTE_Data' on file 7.
Processed 1 pages for database 'ServoxTE', file 'ServoxTE_Log' on file 7.
BACKUP DATABASE successfully processed 585 pages in 1.121 seconds (4.275
MB/sec).

J'ai donc 2 questions:
1) Existe-t-il un moyen de ne pas afficher ce message d'information puisque
de toute façon, je gère les erreurs dans sa stored procedure?
2) Encore mieux, existe-t-il un moyen de mettre ce message d'information
dans une variable? Dans mon exemple ci-dessus, la variable @Output contient
la description de l'erreur en cas d'erreur (géré par ma fonction
fnPrintError). J'aimerais qu'elle contienne le message d'information
retourné par l'engin SQL si le backup a bien fonctionné.

Merci de votre aide





Avatar
Karine
Bonjour,
La partie cliente en question est une stored procedure qui sera lancée par
une tâche cédulée dans Windows.
La stored procedure en question appelle une dizaine d'autres stored
procedures, dans un ordre bien précis.
J'aimerais pouvoir inscrire dans une table SQL, ce qui est retournée lors de
l'exécution de chacune des commandes.
C'est pour cette raison que je voulais capturer le message d'information
dans une variable.
J'aimerais mieux pouvoir capturer l'information, et non pas l'ignorer.
Merci de votre aide

"Med Bouchenafa" wrote in message
news:
SQL Server est fondamentalement une application Client Serveur.
Lorsque la partie Cliente envoie une commande, du style que tu cites, à la
partie Serveur, cette dernière execute la commande et répond toujours avec
un
message d'information.
Il appartient toujours à la partie Cliente d'afficher ou pas ce message
d'information.
Dans ton cas, je dirais que cela dépend du Client que tu utilises pour
exécuter cette commande.
Conçus, avant tout, comme des outils d'administration, les outils
Microsoft
affichent toujours ces messages d'information.
Si tu tu utilses ton propre client, il te sera tout à fait possible
d'ignorer ce message


--
Bien Cordialement
Med Bouchenafa


"Karine" wrote:

Bonjour,
J'ai créé une stored procedure qui me permet de lancer un backup d'une
base
de données X (SQL 2005 Express).

Extrait de ma stored procedure:
....
SET @SQL = N'BACKUP DATABASE [' + @DatabaseName + '] TO DISK = ''' +
@BackupFileName + ''''
BEGIN TRY
EXEC(@SQL)
END TRY
BEGIN CATCH
-- Erreur durant le backup
SELECT @ErrorMsg = ErrorMessage, @ErrNo = ErrorNumber FROM
dbo.fnPrintError()
SET @Output = 'Full backup of database ' + @DatabaseName + ' failed
with
error : ' + CHAR(10) + @ErrorMsg
PRINT @Output
END CATCH
....

Le backup fonctionne bien, toutefois, j'ai le message suivant qui est
retourné suite à l'exécution de la commande BACKUP DATABASE :

Processed 584 pages for database 'ServoxTE', file 'ServoxTE_Data' on file
7.
Processed 1 pages for database 'ServoxTE', file 'ServoxTE_Log' on file 7.
BACKUP DATABASE successfully processed 585 pages in 1.121 seconds (4.275
MB/sec).

J'ai donc 2 questions:
1) Existe-t-il un moyen de ne pas afficher ce message d'information
puisque
de toute façon, je gère les erreurs dans sa stored procedure?
2) Encore mieux, existe-t-il un moyen de mettre ce message d'information
dans une variable? Dans mon exemple ci-dessus, la variable @Output
contient
la description de l'erreur en cas d'erreur (géré par ma fonction
fnPrintError). J'aimerais qu'elle contienne le message d'information
retourné par l'engin SQL si le backup a bien fonctionné.

Merci de votre aide







Avatar
Karine
Bonjour,

Autre point étrange, lorsqu'une erreur survient...
Si je ne mets pas de TRY CATCH et que j'essaie de faire un RESTORE
VERIFYONLY d'un fichier qui n'existe pas par exemple, j'ai 2 messages
d'erreur retourné par l'engin SQL :

Msg 3201, Level 16, State 2, Line 1
Cannot open backup device 'C:Program FilesMicrosoft SQL
ServerMSSQL.1MSSQLBackupServoxTE_20060101_20060430.BAK'. Operating
system error 2(The system cannot find the file specified.).
Msg 3013, Level 16, State 1, Line 1
VERIFY DATABASE is terminating abnormally.


Par contre, si j'utilise TRY et CATCH, l'erreur retourné dans ERROR_NUMBER()
et ERROR_MESSAGE() est seulement :

3013
VERIFY DATABASE is terminating abnormally.

Je suis capable de capturer la deuxième erreur seulement. Comment capturer
"toutes" les erreurs retournées par une seule ligne de commande? C'est
facile de vérifier si le fichier existe avant de faire un RESTORE
VERIFYONLY, là n'est pas la question. Ce qui m'inquiète, c'est que si
plusieurs messages d'erreur surviennent suite à une commande, je n'ai que le
dernier message qui s'affichera dans mon log et dans ce cas-ci, le premier
message d'erreur est beaucoup plus important que le deuxième.

On peut dire que les erreurs et les messages d'information me causent bien
des soucis ces temps-ci...
Merci de votre aide.
Avatar
Philippe T [MS]
Bonjour,

Il n'y a pas de moyen sous SQL 2005. Seule la dernière erreur sera récupéré
et dans ces conditions il faut analyser les causes potentiels de cette
erreur.

Désolé :-(

Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Karine" wrote in message
news:
Bonjour,

Autre point étrange, lorsqu'une erreur survient...
Si je ne mets pas de TRY CATCH et que j'essaie de faire un RESTORE
VERIFYONLY d'un fichier qui n'existe pas par exemple, j'ai 2 messages
d'erreur retourné par l'engin SQL :

Msg 3201, Level 16, State 2, Line 1
Cannot open backup device 'C:Program FilesMicrosoft SQL
ServerMSSQL.1MSSQLBackupServoxTE_20060101_20060430.BAK'. Operating
system error 2(The system cannot find the file specified.).
Msg 3013, Level 16, State 1, Line 1
VERIFY DATABASE is terminating abnormally.


Par contre, si j'utilise TRY et CATCH, l'erreur retourné dans
ERROR_NUMBER() et ERROR_MESSAGE() est seulement :

3013
VERIFY DATABASE is terminating abnormally.

Je suis capable de capturer la deuxième erreur seulement. Comment
capturer "toutes" les erreurs retournées par une seule ligne de commande?
C'est facile de vérifier si le fichier existe avant de faire un RESTORE
VERIFYONLY, là n'est pas la question. Ce qui m'inquiète, c'est que si
plusieurs messages d'erreur surviennent suite à une commande, je n'ai que
le dernier message qui s'affichera dans mon log et dans ce cas-ci, le
premier message d'erreur est beaucoup plus important que le deuxième.

On peut dire que les erreurs et les messages d'information me causent bien
des soucis ces temps-ci...
Merci de votre aide.




Avatar
Karine
Bonjour Phil,
Petite lacune de SQL2005, mais je vais vivre avec :-)
Merci d'avoir pris le temps de répondre.
Tu ne serais pas au courant par hasard, du moyen (s'il existe) de capturer
un message d'information retournée par l'engin suite à une commande backup
ou restore?
Merci encore,
Karine

"Philippe T [MS]" wrote in message
news:
Bonjour,

Il n'y a pas de moyen sous SQL 2005. Seule la dernière erreur sera
récupéré et dans ces conditions il faut analyser les causes potentiels de
cette erreur.

Désolé :-(

Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Karine" wrote in message
news:
Bonjour,

Autre point étrange, lorsqu'une erreur survient...
Si je ne mets pas de TRY CATCH et que j'essaie de faire un RESTORE
VERIFYONLY d'un fichier qui n'existe pas par exemple, j'ai 2 messages
d'erreur retourné par l'engin SQL :

Msg 3201, Level 16, State 2, Line 1
Cannot open backup device 'C:Program FilesMicrosoft SQL
ServerMSSQL.1MSSQLBackupServoxTE_20060101_20060430.BAK'. Operating
system error 2(The system cannot find the file specified.).
Msg 3013, Level 16, State 1, Line 1
VERIFY DATABASE is terminating abnormally.


Par contre, si j'utilise TRY et CATCH, l'erreur retourné dans
ERROR_NUMBER() et ERROR_MESSAGE() est seulement :

3013
VERIFY DATABASE is terminating abnormally.

Je suis capable de capturer la deuxième erreur seulement. Comment
capturer "toutes" les erreurs retournées par une seule ligne de commande?
C'est facile de vérifier si le fichier existe avant de faire un RESTORE
VERIFYONLY, là n'est pas la question. Ce qui m'inquiète, c'est que si
plusieurs messages d'erreur surviennent suite à une commande, je n'ai que
le dernier message qui s'affichera dans mon log et dans ce cas-ci, le
premier message d'erreur est beaucoup plus important que le deuxième.

On peut dire que les erreurs et les messages d'information me causent
bien des soucis ces temps-ci...
Merci de votre aide.








Avatar
SQLpro [MVP]
Karine a écrit :
Bonjour Phil,
Petite lacune de SQL2005, mais je vais vivre avec :-)
Merci d'avoir pris le temps de répondre.
Tu ne serais pas au courant par hasard, du moyen (s'il existe) de capturer
un message d'information retournée par l'engin suite à une commande backup
ou restore?



A ma connaissance le seul moyen est de travailler en "bas niveau" avec
SQL Server et d'utiliser, en V 2000 l'API DB Lib (des DLL écrites en C++
pour accéder directement au SGBDR) ou en V 2005 l'API "SQL Native
Client" car la version DB Lib de 2000 est considérée comme obsolète et
ne sera pas maintenue pour les version futures.

Cepandant, c'est assez long à faire !

A +


Merci encore,
Karine

"Philippe T [MS]" wrote in message
news:
Bonjour,

Il n'y a pas de moyen sous SQL 2005. Seule la dernière erreur sera
récupéré et dans ces conditions il faut analyser les causes potentiels de
cette erreur.

Désolé :-(

Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Karine" wrote in message
news:
Bonjour,

Autre point étrange, lorsqu'une erreur survient...
Si je ne mets pas de TRY CATCH et que j'essaie de faire un RESTORE
VERIFYONLY d'un fichier qui n'existe pas par exemple, j'ai 2 messages
d'erreur retourné par l'engin SQL :

Msg 3201, Level 16, State 2, Line 1
Cannot open backup device 'C:Program FilesMicrosoft SQL
ServerMSSQL.1MSSQLBackupServoxTE_20060101_20060430.BAK'. Operating
system error 2(The system cannot find the file specified.).
Msg 3013, Level 16, State 1, Line 1
VERIFY DATABASE is terminating abnormally.


Par contre, si j'utilise TRY et CATCH, l'erreur retourné dans
ERROR_NUMBER() et ERROR_MESSAGE() est seulement :

3013
VERIFY DATABASE is terminating abnormally.

Je suis capable de capturer la deuxième erreur seulement. Comment
capturer "toutes" les erreurs retournées par une seule ligne de commande?
C'est facile de vérifier si le fichier existe avant de faire un RESTORE
VERIFYONLY, là n'est pas la question. Ce qui m'inquiète, c'est que si
plusieurs messages d'erreur surviennent suite à une commande, je n'ai que
le dernier message qui s'affichera dans mon log et dans ce cas-ci, le
premier message d'erreur est beaucoup plus important que le deuxième.

On peut dire que les erreurs et les messages d'information me causent
bien des soucis ces temps-ci...
Merci de votre aide.













--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Med Bouchenafa
Je ne sais pas ce que tu entends par "une tâche schedulée dans Windows"
Quoi qu'il en soit, le TRY CATCH ne peut pas "pièger" les messages
d'informations. Il ne piège que les messages dont la severité est superieur a
10
Avec un petit script en VBScript et ADO par exemple, tu devrai facilement
pièger tous les messages dans la collection Errors d'ADO
--
Bien Cordialement
Med Bouchenafa


"Karine" wrote:

Bonjour,
La partie cliente en question est une stored procedure qui sera lancée par
une tâche cédulée dans Windows.
La stored procedure en question appelle une dizaine d'autres stored
procedures, dans un ordre bien précis.
J'aimerais pouvoir inscrire dans une table SQL, ce qui est retournée lors de
l'exécution de chacune des commandes.
C'est pour cette raison que je voulais capturer le message d'information
dans une variable.
J'aimerais mieux pouvoir capturer l'information, et non pas l'ignorer.
Merci de votre aide

"Med Bouchenafa" wrote in message
news:
> SQL Server est fondamentalement une application Client Serveur.
> Lorsque la partie Cliente envoie une commande, du style que tu cites, à la
> partie Serveur, cette dernière execute la commande et répond toujours avec
> un
> message d'information.
> Il appartient toujours à la partie Cliente d'afficher ou pas ce message
> d'information.
> Dans ton cas, je dirais que cela dépend du Client que tu utilises pour
> exécuter cette commande.
> Conçus, avant tout, comme des outils d'administration, les outils
> Microsoft
> affichent toujours ces messages d'information.
> Si tu tu utilses ton propre client, il te sera tout à fait possible
> d'ignorer ce message
>
>
> --
> Bien Cordialement
> Med Bouchenafa
>
>
> "Karine" wrote:
>
>> Bonjour,
>> J'ai créé une stored procedure qui me permet de lancer un backup d'une
>> base
>> de données X (SQL 2005 Express).
>>
>> Extrait de ma stored procedure:
>> ....
>> SET @SQL = N'BACKUP DATABASE [' + @DatabaseName + '] TO DISK = ''' +
>> @BackupFileName + ''''
>> BEGIN TRY
>> EXEC(@SQL)
>> END TRY
>> BEGIN CATCH
>> -- Erreur durant le backup
>> SELECT @ErrorMsg = ErrorMessage, @ErrNo = ErrorNumber FROM
>> dbo.fnPrintError()
>> SET @Output = 'Full backup of database ' + @DatabaseName + ' failed
>> with
>> error : ' + CHAR(10) + @ErrorMsg
>> PRINT @Output
>> END CATCH
>> ....
>>
>> Le backup fonctionne bien, toutefois, j'ai le message suivant qui est
>> retourné suite à l'exécution de la commande BACKUP DATABASE :
>>
>> Processed 584 pages for database 'ServoxTE', file 'ServoxTE_Data' on file
>> 7.
>> Processed 1 pages for database 'ServoxTE', file 'ServoxTE_Log' on file 7.
>> BACKUP DATABASE successfully processed 585 pages in 1.121 seconds (4.275
>> MB/sec).
>>
>> J'ai donc 2 questions:
>> 1) Existe-t-il un moyen de ne pas afficher ce message d'information
>> puisque
>> de toute façon, je gère les erreurs dans sa stored procedure?
>> 2) Encore mieux, existe-t-il un moyen de mettre ce message d'information
>> dans une variable? Dans mon exemple ci-dessus, la variable @Output
>> contient
>> la description de l'erreur en cas d'erreur (géré par ma fonction
>> fnPrintError). J'aimerais qu'elle contienne le message d'information
>> retourné par l'engin SQL si le backup a bien fonctionné.
>>
>> Merci de votre aide
>>
>>
>>





Avatar
Philippe T [MS]
Bonjour,

Peut-être faut il aller voir du coté des alertes mais je n'ai jamais testé ?


Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Karine" wrote in message
news:%
Bonjour Phil,
Petite lacune de SQL2005, mais je vais vivre avec :-)
Merci d'avoir pris le temps de répondre.
Tu ne serais pas au courant par hasard, du moyen (s'il existe) de capturer
un message d'information retournée par l'engin suite à une commande backup
ou restore?
Merci encore,
Karine

"Philippe T [MS]" wrote in message
news:
Bonjour,

Il n'y a pas de moyen sous SQL 2005. Seule la dernière erreur sera
récupéré et dans ces conditions il faut analyser les causes potentiels de
cette erreur.

Désolé :-(

Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Karine" wrote in message
news:
Bonjour,

Autre point étrange, lorsqu'une erreur survient...
Si je ne mets pas de TRY CATCH et que j'essaie de faire un RESTORE
VERIFYONLY d'un fichier qui n'existe pas par exemple, j'ai 2 messages
d'erreur retourné par l'engin SQL :

Msg 3201, Level 16, State 2, Line 1
Cannot open backup device 'C:Program FilesMicrosoft SQL
ServerMSSQL.1MSSQLBackupServoxTE_20060101_20060430.BAK'. Operating
system error 2(The system cannot find the file specified.).
Msg 3013, Level 16, State 1, Line 1
VERIFY DATABASE is terminating abnormally.


Par contre, si j'utilise TRY et CATCH, l'erreur retourné dans
ERROR_NUMBER() et ERROR_MESSAGE() est seulement :

3013
VERIFY DATABASE is terminating abnormally.

Je suis capable de capturer la deuxième erreur seulement. Comment
capturer "toutes" les erreurs retournées par une seule ligne de
commande? C'est facile de vérifier si le fichier existe avant de faire
un RESTORE VERIFYONLY, là n'est pas la question. Ce qui m'inquiète,
c'est que si plusieurs messages d'erreur surviennent suite à une
commande, je n'ai que le dernier message qui s'affichera dans mon log et
dans ce cas-ci, le premier message d'erreur est beaucoup plus important
que le deuxième.

On peut dire que les erreurs et les messages d'information me causent
bien des soucis ces temps-ci...
Merci de votre aide.












1 2