Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2006, 23h01   #1
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
Par défaut [SYBASE ASE 12.5.3]Message d'erreur réutilisable

Bonjour,

J'ai pour habitude d'utiliser les messages d'erreurs réutilisables.

J'ai voulu rajouter un de ces messages sur une base.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
/*
** Message d'erreur réutilisable
** 30001, "Erreur : update table '%1!' failed in database '%2!'."
*/
 
USE mutubatch
go
 
SELECT * FROM sysusermessages WHERE error=30001
 
IF @@rowcount <> 0
begin
exec sp_dropmessage 30001
end
go
 
exec sp_addmessage 30001, "Erreur : update table '%1!' failed in database '%2!'."
go
 
SELECT * FROM sysusermessages
go
Et voici le message obtenu :

Code :
1
2
3
4
5
6
7
 
 
Msg 225, Level 16, State 3:
Server 'MUTUDEV', Procedure 'sp_addmessage', Line 226:
Cannot run query--referenced object (name NAME NOT RECOVERABLE) dropped during
query optimization.
(RETURN STATUS = -6)
Je regarde le détail de l'erreur dans le guide "Troubleshooting and Error Messages"

Code :
1
2
3
4
5
 
 
Some reasons FOR this error include:
The value of the number of open objects configuration parameter IS too low.
A problem EXISTS IN Adaptive Server.
Je fais

Code :
1
2
3
4
 
 
exec sp_configure "number of open objects"
go
J'obtiens

Code :
1
2
3
4
5
6
7
8
9
10
11
 
 
 Parameter Name                 DEFAULT     Memory Used Config Value
	 Run Value   Unit                 Type       
 ------------------------------ ----------- ----------- ------------
	 ----------- -------------------- ---------- 
 number of open objects                 500         782         500 
	         500 number               dynamic    
 
(1 row affected)
(RETURN STATUS = 0)
Je cherche un peu et je décide de faire la même chose sur la base master du même serveur.
Aucun problème, le message d'erreur réutilisable est bien créé.

Code :
1
2
3
4
5
 
 
Erreur : UPDATE TABLE '<arg1>' failed IN DATABASE '<arg2>'.
The message has been inserted.
(RETURN STATUS = 0)
Le message est bien dans sysusermessages de master.

Auriez vous une idée du problème qu'il peut y avoir sur mon autre base sachant que j'ai déjà ajouté des messages d'erreurs avec ce même script dans cette même base ?

La base est elle corrompue ?

Merci.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 07h57   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Je crois que c'était un problème transitoire, lié au niveau de charge (nombre d'utilisateurs, etc) au moment où la requète est passée.

On peut utiliser "sp_monitorconfig 'all'" pour voir le niveau d'utilisation d'un certain nombre de paramètres (dont "number of open objects"), et ajuster ces paramètres vers le haut si nécessaire.

("number of open objects" à 500 est assez bas et il serait peut-être judicieux de le monter).

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 11h27   #3
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
Je tiens à préciser que je suis seul sur le serveur, il n'y a pas d'autres utilisateurs.

Je suis passé à 5000 mais d'après le résultat sp_monitorconfig le max est 411 donc même à 500 c'était bon je pense.

Code :
1
2
3
4
5
6
 
USE mutubatch
go
 
exec sp_monitorconfig "number of open objects"
go
Code :
1
2
3
4
 
Name                      Num_free    Num_active  Pct_act Max_Used    Num_Reuse   
----                      ----------- ----------- ------- ----------- ----------- 
number of open objects           4590         410   8.20          411           0
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
USE mutubatch
go
 
/*
** Message d'erreur réutilisable
** 30001, "Erreur : update table '%1!' failed in database '%2!'."
*/
SELECT * FROM sysusermessages WHERE error=30001
IF @@rowcount <> 0
begin
exec sp_dropmessage 30001
end
go
exec sp_addmessage 30001, "Erreur : update table '%1!' failed in database '%2!'."
go
SELECT * FROM sysusermessages
go
Code :
1
2
3
4
5
6
7
8
9
 
Parameter Name                 DEFAULT     Memory Used Config Value Run Value   Unit                 Type       
--------------                 -------     ----------- ------------ ---------   ----                 ----       
number of open objects                 500        7840        5000         5000 number               dynamic    
 
error       uid         description                                                                                                                                             langid      dlevel      
----------- ----------- -----------                                     ----------- ----------- 
error       uid         description                                                                                                                                             langid      dlevel      
----------- ----------- -----------                                     ----------- -----------
Code :
1
2
3
4
5
6
7
8
9
 
(1 row affected)
(RETURN STATUS = 0)
(0 rows affected)
Server Message:  Number  225, Severity  16
Server 'MUTUDEV', Procedure 'sp_addmessage', Line 226:
Cannot run query--referenced object (name NAME NOT RECOVERABLE) dropped during query optimization. 
(RETURN STATUS = -6)
(0 rows affected)
J'obtiens toujours ce message d'erreur.

Par curiosité j'ai regardé "number of open objects" sur master.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
USE master
go
 
exec sp_configure "number of open objects"
go
 
/*
** Message d'erreur réutilisable
** 30001, "Erreur : update table '%1!' failed in database '%2!'."
*/
SELECT * FROM sysusermessages WHERE error=30001
IF @@rowcount <> 0
begin
exec sp_dropmessage 30001
end
go
exec sp_addmessage 30001, "Erreur : update table '%1!' failed in database '%2!'."
go
SELECT * FROM sysusermessages
go
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Parameter Name                 DEFAULT     Memory Used Config Value Run Value   Unit                 Type       
--------------                 -------     ----------- ------------ ---------   ----                 ----       
number of open objects                 500        7800        5000         5000 number               dynamic    
 
error       uid         description                                                                                                                                                                                                                                                     langid      dlevel      
----------- ----------- -----------                                                                                                                                                                                                                                                     ----------- ----------- 
      30001           1 Erreur : UPDATE TABLE '%1!' failed IN DATABASE '%2!'.                                                                                                                                                                                                                  NULL           0 
 
error       uid         description                                                                                                                                                                                                                                                     langid      dlevel      
----------- ----------- -----------                                                                                                                                                                                                                                                     ----------- ----------- 
      30001           1 Erreur : UPDATE TABLE '%1!' failed IN DATABASE '%2!'.                                                                                                                                                                                                                  NULL           0
Pour la même configuration "number of open objects", sur master la modification passe bien, par contre elle ne marche pas sur les autres bases.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 11h52   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Est-ce que tu as chequé l'error log d'ASE?

Si c'est faisable - fais un arrêt/relance du dataserver.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 12h05   #5
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
C'est la première chose que j'ai fait et il y a rien.

Je vais tenter d'obtenir l'autorisation pour faire stop/start du serveur.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 16h03   #6
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
Je viens de faire un arrêt/relance du dataserver.
J'ai relancé le script et j'ai toujours la même erreur.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 16h18   #7
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Je suggère d'ouvrir un call avec le support Sybase...

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 17h13   #8
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
Ok, je vais les contacter et je te tiens au courant via le topic.
Je te remercie pour toutes tes réponses.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 23h22   #9
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
Enfin la solution :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
isql -Usa -P -SMUTUDEV
 
1> USE sybsystemprocs
2> go
 
1> SELECT name, objspare FROM sysobjects WHERE type='S'
2> go
 
 name                           objspare
 ------------------------------ -----------
 sysobjects                               0
 sysindexes                               0
 syscolumns                               0
 systypes                                 0
 sysprocedures                            0
 syscomments                              0
 syssegments                              0
 syslogs                                  0
 sysprotects                              0
 sysusers                                 0
 sysalternates                            0
 sysdepends                               0
 syskeys                                  0
 sysgams                                  0
 sysusermessages                          0
 sysreferences                            0
 sysconstraints                           0
 systhresholds                            0
 sysroles                                 0
 sysattributes                            0
 syspartitions                            0
 systabstats                              0
 sysstatistics                            0
 sysxtypes                                0
 sysjars                                  0
 sysqueryplans                            0
 
(26 rows affected)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
1> sp_configure 'allow updates', 1
2> go
 
 Parameter Name                 DEFAULT     Memory Used Config Value
         Run Value   Unit                 Type
 ------------------------------ ----------- ----------- ------------
         ----------- -------------------- ----------
 allow updates TO system TABLES           0           0           1
                   1 switch               dynamic
 
(1 row affected)
Configuration OPTION changed. The SQL Server need NOT be rebooted since the
OPTION IS dynamic.
Resulting configuration value AND memory USE have NOT changed FROM previous
VALUES: new configuration value 1, previous value 1.
(RETURN STATUS = 0)
Code :
1
2
3
4
5
6
7
8
 
 
1> USE mutubatch
2> go
 
1> UPDATE sysobjects SET objspare=0 WHERE name='sysusermessages'
2> go
(1 row affected)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
1> sp_configure 'allow updates',0
2> go
 
 Parameter Name                 DEFAULT     Memory Used Config Value
         Run Value   Unit                 Type
 ------------------------------ ----------- ----------- ------------
         ----------- -------------------- ----------
 allow updates TO system TABLES           0           0           0
                   0 switch               dynamic
 
(1 row affected)
Configuration OPTION changed. The SQL Server need NOT be rebooted since the
OPTION IS dynamic.
Changing the value of 'allow updates to system tables' does NOT increase the
amount of memory Adaptive Server uses.
(RETURN STATUS = 0)
Code :
1
2
3
4
5
6
7
8
9
 
1> shutdown
2> go
 
Server SHUTDOWN BY request.
The SQL Server IS terminating this process.
CT-LIBRARY error:
        ct_results(): network packet layer: internal net library error: Net-Libr
ary operation terminated due TO disconnect
Relancer le serveur puis ré-exécuter la commande :

Code :
1
2
3
4
5
6
7
8
9
10
 
USE mutubatch
go
 
/*
** Message d'erreur réutilisable
** 30001, "Erreur : update table '%1!' failed in database '%2!'."
*/
exec sp_addmessage 30001, "Erreur : update table '%1!' failed in database '%2!'."
go
Le message d'erreur réutilisable est ajouté.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h19.


 
 
 
 
Partenaires

Hébergement Web