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 03/01/2007, 16h29   #1
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Par défaut [ASE]Difficulté dans la compréhension de log

Bonjour à tous et bonne année 2007

Lors de l'exécution d'une procédure stockée, j'obtiens le message d'erreur suivant :
Code :
Cannot DROP the constraint XXXX , because it doesn t exist IN the system catalogs.
Cette erreur apparait lors de l'exécution du code suivant :
Code :
1
2
3
4
IF EXISTS (SELECT 'x' FROM sysobjects WHERE name='XXXX')
BEGIN
     ALTER TABLE TTTT DROP CONSTRAINT XXXX
END
Je ne comprends pas cette erreur d'autant plus que la contrainte XXXX existe bien sur ma table TTTT.

Avez-vous une idée ?
Merci d'avance.
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 08h28   #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
Est-ce que tu peux exécuter
Code :
1
2
 
sp_helpconstraint <nom_de_ta_table>
et poster le résultat ?

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 04/01/2007, 09h34   #3
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Bonjour,

Voici le résultat de la requête :

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
 Warnings: ---> 
   W (1):  
   W (2): Total Number of Referential Constraints: 9
   W (3):  
   W (4): Details:
   W (5): -- Number of references made by this table: 5
   W (6): -- Number of references to this table: 4
   W (7): -- Number of self references to this table: 0
   W (8):  
   W (9): Formula FOR Calculation:
   W (10): Total Number of Referential Constraints
   W (11): = Number of REFERENCES made BY this TABLE
   W (12): + Number of REFERENCES made TO this TABLE
   W (13): - Number of self REFERENCES within this TABLE
   W (14): 010P4: Un paramètre de sortie reçu a été ignoré.
          <--- 
 
 
 name                definition                                                                                                   created             
 ------------------  -----------------------------------------------------------------------------------------------------------  ------------------- 
 SAM_NET_all_usr_f1  SAM_NET_all_usr FOREIGN KEY (usr_typ_cod) REFERENCES SAM_REF_all_typ(usr_typ_cod)                            Apr 25 2006 12:59PM 
 SAM_NET_all_usr_f2  SAM_NET_all_usr FOREIGN KEY (acc_sta_cod) REFERENCES SAM_REF_all_sta(acc_sta_cod)                            Apr 25 2006 12:59PM 
 SAM_NET_all_usr_f3  SAM_NET_all_usr FOREIGN KEY (acc_typ_cod) REFERENCES SAM_REF_all_acc(acc_typ_cod)                            Apr 25 2006 12:59PM 
 SAM_NET_all_usr_f4  SAM_NET_all_usr FOREIGN KEY (srv_ptr_idt) REFERENCES SAM_REF_all_ptr(srv_ptr_idt)                            Apr 25 2006 12:59PM 
 SAM_NET_usr_ctc_f1  SAM_NET_usr_ctc FOREIGN KEY (usr_acc_nam) REFERENCES SAM_NET_all_usr(usr_acc_nam)                            Apr 25 2006 12:59PM 
 SAM_NET_usr_cus_f1  SAM_NET_usr_cus FOREIGN KEY (usr_acc_nam) REFERENCES SAM_NET_all_usr(usr_acc_nam)                            Apr 25 2006 12:59PM 
 SAM_NET_usr_nos_f1  SAM_NET_usr_nos FOREIGN KEY (usr_acc_nam) REFERENCES SAM_NET_all_usr(usr_acc_nam)                            Apr 25 2006 12:59PM 
 SAM_NET_usr_prf_f2  SAM_NET_usr_prf FOREIGN KEY (usr_acc_nam) REFERENCES SAM_NET_all_usr(usr_acc_nam)                            Apr 25 2006 12:59PM 
 SAM_NET_all_usr_f5  SAM_NET_all_usr FOREIGN KEY (usr_acc_nam, cus_num_cod) REFERENCES SAM_NET_usr_cus(usr_acc_nam, cus_num_cod)  Nov 20 2006  9:23AM 
 SAM_NET_all_usr_pk  PRIMARY KEY INDEX ( usr_acc_nam) : CLUSTERED, FOREIGN REFERENCE                                              Jan  1 1900 12:00AM 
 
 10 record(s) selected [Fetch MetaData: 63/ms] [Fetch DATA: 31/ms] 
 
 
 [Executed: 04/01/07 08:33:01 GMT ] [Execution: 392/ms]
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 10h13   #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
Les contraintes ne sont pas stockées dans sysobjects directement.
Si on analyse le code de "sp_helpconstraint" on voit que le nom des contraintes n'est pas pris dans cette table, mais plutôt dans sysindexes, etc.

Quelle type de contraintes est-ce que tu veux dropper ? En fonction du type de contrainte on pourra déterminer où trouver l'info...

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 04/01/2007, 10h31   #5
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Citation:
Envoyé par mpeppler
Les contraintes ne sont pas stockées dans sysobjects directement.
Si on analyse le code de "sp_helpconstraint" on voit que le nom des contraintes n'est pas pris dans cette table, mais plutôt dans sysindexes, etc.

Quelle type de contraintes est-ce que tu veux dropper ? En fonction du type de contrainte on pourra déterminer où trouver l'info...

Michael
Si car :
Code :
SELECT 'x' FROM sysobjects WHERE name='SAM_NET_all_usr_f5'
me renvoit bien quelque chose.

En fait, mon exécution plante sur :
Code :
ALTER TABLE SAM_NET_all_usr DROP CONSTRAINT SAM_NET_all_usr_f5
Hors, la contrainte SAM_NET_all_usr_f5 existe bien sur la table SAM_NET_all_usr.
sp_helpconstraint nous l'a montré.
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 11h52   #6
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
Ah oui, pardon.

Que donne ceci:
Code :
1
2
3
 
SELECT name, id, object_name(tableid) FROM sysobjects , sysconstraints 
WHERE id=constrid AND name='SAM_NET_all_usr_f5'
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 04/01/2007, 13h58   #7
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Résultat :

Code :
1
2
3
 name                id         column3         
 ------------------  ---------  --------------- 
 SAM_NET_all_usr_f5  678306222  SAM_NET_all_usr
Merci pr ton aide
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 14h07   #8
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
Bon, là je séche...

Si la commande de ALTER... DROP est bien lancée dans la bonne base alors je ne vois pas pourquoi tu as ce message.

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 04/01/2007, 14h24   #9
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Citation:
Envoyé par mpeppler
Bon, là je séche...

Si la commande de ALTER... DROP est bien lancée dans la bonne base alors je ne vois pas pourquoi tu as ce message.

Michael
Tant pis
En tout cas, merci pour ton aide.
Bonne fin de journée mpeppler
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 15h24   #10
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Code :
1
2
3
4
5
6
USE VotreBase
go
dbcc traceon(3601)
dbcc checkcatalog
dbcc traceoff(3601)
go
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 15h48   #11
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Voilà le résultat. Par contre, je ne sais pas l'interpréter.

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
 
Command was executed successfully
 
[Executed: 04/01/07 14:40:37 GMT ] [Execution: 141/ms] 
 
 Command was executed successfully
 
 Warnings: ---> 
   W (1): DBCC execution completed. IF DBCC printed error messages, contact a user WITH System Administrator (SA) role.
   W (2): Checking current DATABASE: Logical pagesize IS 2048 bytes
   W (3): The following segments have been defined FOR DATABASE 5 (DATABASE name XXXX).
   W (4): virtual start addr	size (logical pages)	segments
   W (5): --------------------    ----------------------    --------------------------
   W (6): 6660                       102400
   W (7):                                                     0
   W (8):                                                     1
   W (9): 109060                       38400
   W (10):                                                     2
   W (11): 147460                       256000
   W (12):                                                     0
   W (13):                                                     1
   W (14): 403460                       115200
   W (15):                                                     2
   W (16): 518660                       25344
   W (17):                                                     0
   W (18):                                                     1
   W (19): DBCC execution completed. IF DBCC printed error messages, contact a user WITH System Administrator (SA) role.
   W (20): DBCC execution completed. IF DBCC printed error messages, contact a user WITH System Administrator (SA) role.
          <--- 
 [Executed: 04/01/07 14:40:37 GMT ] [Execution: 7360/ms]
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 16h43   #12
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
J'aurais dû ajouter un après le dbcc checkcatalog afin de s'assurer qu'aucune inconsistance n'apparaît... ce qui est visiblement le cas.

Soit donc pas d'erreur entre le catalogue et les objets... soit donc pas de contrainte phantôme...

Votre commande retourne-t-elle toujours la même erreur maintenant ?
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 09h26   #13
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Oups j'ai été trop vite.
Donc voici ce qui m'est retourné.

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
 Command was executed successfully
 
 [Executed: 05/01/07 08:24:44 GMT ] [Execution: 16/ms] 
 
 Warnings: ---> 
   W (1): DBCC execution completed. IF DBCC printed error messages, contact a user WITH System Administrator (SA) role.
   W (2): Checking current DATABASE: Logical pagesize IS 2048 bytes
   W (3): The following segments have been defined FOR DATABASE 5 (DATABASE name XXXX).
   W (4): virtual start addr	size (logical pages)	segments
   W (5): --------------------    ----------------------    --------------------------
   W (6): 6660                       102400
   W (7):                                                     0
   W (8):                                                     1
   W (9): 109060                       38400
   W (10):                                                     2
   W (11): 147460                       256000
   W (12):                                                     0
   W (13):                                                     1
   W (14): 403460                       115200
   W (15):                                                     2
   W (16): 518660                       25344
   W (17):                                                     0
   W (18):                                                     1
   W (19): DBCC execution completed. IF DBCC printed error messages, contact a user WITH System Administrator (SA) role.
   W (20): DBCC execution completed. IF DBCC printed error messages, contact a user WITH System Administrator (SA) role.
          <--- 
 column1    
 ---------- 
 0          
 
 1 record(s) selected [Fetch MetaData: 78/ms] [Fetch DATA: 62/ms] 
 
 [Executed: 05/01/07 08:24:44 GMT ] [Execution: 7462/ms]
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 09h46   #14
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
ça n'apporte rein de plus effectivement puisqu'aucune faute n'apparaissait précédemment.

Je réitère ma question : tjs le même msg d'erreur lors du ALTER TABLE ?
Pourriez-vous extraire le DDL de la table (et de toutes ses références) via Sybase Central ?
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 10h22   #15
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Citation:
Envoyé par fadace
ça n'apporte rein de plus effectivement puisqu'aucune faute n'apparaissait précédemment.

Je réitère ma question : tjs le même msg d'erreur lors du ALTER TABLE ?
Pourriez-vous extraire le DDL de la table (et de toutes ses références) via Sybase Central ?
Alors, en ligne de commande sql, le ALTER TABLE passe.
Via l'application, j'ai tjs le même message d'erreur.

Facade, pourriez-vous me dire ce que le code que vous m'avez fait exécuter précédemment aurait pu changer ?

La DDL :

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
 
 
-----------------------------------------------------------------------------
-- DDL for Table'xums.dbo.SAM_NET_all_usr'
-----------------------------------------------------------------------------
print 'Creating Table xums.dbo.SAM_NET_all_usr'
go 
 
USE xums
go 
 
setuser 'dbo'
go 
 
CREATE TABLE SAM_NET_all_usr (
	usr_acc_nam                     varchar(100)                     NOT NULL  ,
	usr_acc_pwd                     varchar(100)                     NOT NULL  ,
	usr_typ_cod                     varchar(5)                       NOT NULL  ,
	acc_sta_cod                     varchar(5)                       NOT NULL  ,
	acc_typ_cod                     varchar(5)                       NOT NULL  ,
	cus_typ_cod                     varchar(15)                      NOT NULL  ,
	cus_num_cod                     varchar(15)                      NOT NULL  ,
	srv_ptr_idt                     varchar(15)                          NULL  ,
	usr_fst_nam                     varchar(50)                          NULL  ,
	usr_lst_nam                     varchar(50)                          NULL  ,
	usr_ema_adr                     varchar(100)                         NULL  ,
	usr_tel_nbr                     varchar(30)                          NULL  ,
	usr_acc_inf                     varchar(100)                         NULL  ,
	usr_mig_inf                     varchar(100)                         NULL  ,
	usr_cre_dat                     varchar(15)                          NULL  ,
	usr_act_dat                     varchar(15)                          NULL  ,
	usr_cut_ovr                     varchar(15)                          NULL  ,
	usr_sus_dat                     varchar(15)                          NULL  ,
	usr_cls_dat                     varchar(15)                          NULL  ,
	usr_upd_dat                     varchar(15)                          NULL  ,
	usr_cre_aut                     varchar(100)                         NULL  ,
	usr_upd_aut                     varchar(100)                         NULL  ,
	ums_cre_dat                     datetime                             NULL  ,
	ums_upd_dat                     datetime                             NULL  ,
		CONSTRAINT SAM_NET_all_usr_pk PRIMARY KEY CLUSTERED ( usr_acc_nam )  ON 'default' 
)
LOCK allpages
 ON 'default'
go 
 
 
exec sp_primarykey 'xums.dbo.SAM_NET_all_usr', 'usr_acc_nam'
go 
 
 
setuser
go 
 
-----------------------------------------------------------------------------
-- DDL for Index 'SAM_NET_all_usr_i1'
-----------------------------------------------------------------------------
print 'Creating Index SAM_NET_all_usr_i1'
go
 
CREATE nonclustered INDEX SAM_NET_all_usr_i1 
ON xums.dbo.SAM_NET_all_usr ( acc_sta_cod)
go 
 
 
-----------------------------------------------------------------------------
-- DDL for Index 'SAM_NET_all_usr_i2'
-----------------------------------------------------------------------------
print 'Creating Index SAM_NET_all_usr_i2'
go
 
CREATE nonclustered INDEX SAM_NET_all_usr_i2 
ON xums.dbo.SAM_NET_all_usr ( srv_ptr_idt)
go 
 
 
-----------------------------------------------------------------------------
-- DDL for Trigger 'xums.dbo.ti_SAM_NET_all_usr'
-----------------------------------------------------------------------------
print 'Creating Trigger ti_SAM_NET_all_usr'
go 
 
USE xums
go 
 
setuser 'dbo'
go 
 
 
CREATE  TRIGGER ti_SAM_NET_all_usr
ON                 SAM_NET_all_usr
FOR     INSERT, UPDATE
AS
BEGIN
        DECLARE @err_cod_nbr int,	
		@err_cod_msg varchar(255)
	DECLARE @usr_acc_nam	varchar(100), @usr_acc_pwd	varchar(100),
		@usr_acc_inf	varchar(100), @cus_num_cod	varchar (15),
		@cus_typ_cod	varchar (15), @cus_ita_cod	varchar (15),
		@usr_fst_nam	varchar (50), @new_fst_nam	varchar (50),
		@usr_lst_nam	varchar (50), @new_lst_nam	varchar (50),
		@usr_ema_adr	varchar(100), @new_ema_adr 	varchar(100),
		@usr_tel_nbr	varchar (30), @new_tel_nbr 	varchar (30),
		@usr_fax_nbr	varchar (30), @new_fax_nbr 	varchar (30),
		@srv_ptr_idt	varchar (15), @usr_mig_inf	varchar(100),
		@usr_cut_ovr	varchar (15), @usr_acc_idx	         int
 
        SELECT  @usr_acc_nam = I.usr_acc_nam,
		@usr_acc_pwd = I.usr_acc_pwd,
		@usr_acc_inf = I.usr_acc_inf,
		@cus_num_cod = I.cus_num_cod,
		@cus_typ_cod = (SELECT C.cus_typ_cod FROM SAM_REF_all_cus C WHERE C.cus_num_cod=I.cus_num_cod),
		@cus_ita_cod = (SELECT lower(D.cus_ita_cod) FROM SAM_REF_all_cus D WHERE D.cus_num_cod=I.cus_num_cod),
		@usr_fst_nam = I.usr_fst_nam,
		@usr_lst_nam = I.usr_lst_nam,
		@usr_ema_adr = I.usr_ema_adr,
		@usr_tel_nbr = I.usr_tel_nbr,
		@srv_ptr_idt = I.srv_ptr_idt,
		@usr_mig_inf = I.usr_mig_inf,
		@usr_cut_ovr = I.usr_cut_ovr
        FROM    inserted I
	IF @@rowcount =0 RETURN
 
	/* check user login unicity (NOT case sensitive) */
 
	IF 	EXISTS (SELECT 's' FROM SAM_NET_all_usr WHERE upper(usr_acc_nam)=upper(@usr_acc_nam) AND usr_acc_nam<>@usr_acc_nam)
	BEGIN		
		SELECT	@err_cod_nbr = 25001,
			@err_cod_msg = "ERROR: Can Not Record the Login, the login " + @usr_acc_nam + " already exists in another case."
		RAISERROR @err_cod_nbr @err_cod_msg
		ROLLBACK TRANSACTION
		RETURN
	END
 
	/* check that user and password contains only alphanum chars and - _  */
 
	SELECT	@usr_acc_idx = 1
	WHILE	@usr_acc_idx <= char_length(@usr_acc_nam)
	BEGIN		
		IF	upper(substring(@usr_acc_nam,@usr_acc_idx,1)) NOT LIKE '[A-Z]'
		AND	upper(substring(@usr_acc_nam,@usr_acc_idx,1)) NOT LIKE '[0-9]'
		AND	upper(substring(@usr_acc_nam,@usr_acc_idx,1)) NOT IN ('-', '_', '@', '.')
		BEGIN
			SELECT	@err_cod_nbr = 25001,
				@err_cod_msg = "ERROR: Can Not Record the Login, character " + substring(@usr_acc_nam,@usr_acc_idx,1) + " is forbidden in " + @usr_acc_nam
			RAISERROR @err_cod_nbr @err_cod_msg
			ROLLBACK TRANSACTION
			RETURN
		END
		SELECT	@usr_acc_idx= @usr_acc_idx + 1
	END
 
	SELECT	@usr_acc_idx = 1
	WHILE	@usr_acc_idx <= char_length(@usr_acc_pwd)
	BEGIN		
		IF	upper(substring(@usr_acc_pwd,@usr_acc_idx,1)) NOT LIKE '[A-Z]'
		AND	upper(substring(@usr_acc_pwd,@usr_acc_idx,1)) NOT LIKE '[0-9]'
		AND	upper(substring(@usr_acc_pwd,@usr_acc_idx,1)) NOT IN ('-', '_', '@', '.')
		BEGIN
			SELECT	@err_cod_nbr = 25001,
				@err_cod_msg = "ERROR: Can Not Record the Login, character " + substring(@usr_acc_nam,@usr_acc_idx,1) + " is forbidden in " + @usr_acc_pwd
			RAISERROR @err_cod_nbr @err_cod_msg
			ROLLBACK TRANSACTION
			RETURN
		END
		SELECT	@usr_acc_idx = @usr_acc_idx + 1
	END
 
        /* force that user data contains only alphanum chars and +.()- _  */
 
	EXEC @err_cod_nbr = SAM_CHK_usr_dat @usr_fst_nam, @usr_acc_idx output, @new_fst_nam output
	EXEC @err_cod_nbr = SAM_CHK_usr_dat @usr_lst_nam, @usr_acc_idx output, @new_lst_nam output
 
        /* check that user data contains only alphanum chars and +.()- _  */
 
	EXEC @err_cod_nbr = SAM_CHK_usr_dat @usr_ema_adr, @usr_acc_idx output, @new_ema_adr output
	IF	(@err_cod_nbr > 0 ) 
	BEGIN
		SELECT	@err_cod_nbr = 25001,
			@err_cod_msg = "ERROR: Can Not Record the Login, character " + substring(@usr_ema_adr,@usr_acc_idx,1) + " is forbidden in " + @usr_ema_adr
		RAISERROR @err_cod_nbr @err_cod_msg
		ROLLBACK TRANSACTION
		RETURN
	END
 
	EXEC @err_cod_nbr = SAM_CHK_usr_dat @usr_tel_nbr, @usr_acc_idx output, @new_tel_nbr output
	IF	(@err_cod_nbr > 0 ) 
	BEGIN
		SELECT	@err_cod_nbr = 25001,
			@err_cod_msg = "ERROR: Can Not Record the Login, character " + substring(@usr_tel_nbr,@usr_acc_idx,1) + " is forbidden in " + @usr_tel_nbr
		RAISERROR @err_cod_nbr @err_cod_msg
		ROLLBACK TRANSACTION
		RETURN
	END
 
	EXEC @err_cod_nbr = SAM_CHK_usr_dat @usr_fax_nbr, @usr_acc_idx output, @new_fax_nbr output
	IF	(@err_cod_nbr > 0 ) 
	BEGIN
		SELECT	@err_cod_nbr = 25001,
			@err_cod_msg = "ERROR: Can Not Record the Login, character " + substring(@usr_fax_nbr,@usr_acc_idx,1) + " is forbidden in " + @usr_fax_nbr
		RAISERROR @err_cod_nbr @err_cod_msg
		ROLLBACK TRANSACTION
		RETURN
	END
 
	/* on user password update for webvision-sitatools, check adequation to xreg constraint */
 
	IF EXISTS (SELECT 'x' FROM SAM_NET_usr_prf WHERE usr_acc_nam = @usr_acc_nam AND srv_app_idt IN ('webvision', 'sitatools'))
	BEGIN
 
		IF	( char_length(@usr_acc_pwd) > 15 )
		BEGIN
			SELECT	@err_cod_nbr = 25001,
				@err_cod_msg = "ERROR: Can  Not Record the Login/Password, it exceeds the 15 characters limit " + @usr_acc_nam + "/" + @usr_acc_pwd
			RAISERROR @err_cod_nbr @err_cod_msg
			ROLLBACK TRANSACTION
			RETURN
		END
 
		SELECT	@usr_acc_idx = 1
		WHILE	@usr_acc_idx <= char_length(@usr_acc_pwd)
		BEGIN		
			IF	upper(substring(@usr_acc_pwd,@usr_acc_idx,1)) NOT LIKE '[A-Z]'
			AND	upper(substring(@usr_acc_pwd,@usr_acc_idx,1)) NOT LIKE '[0-9]'
			AND	upper(substring(@usr_acc_pwd,@usr_acc_idx,1)) NOT IN ('-', '_')
			BEGIN
				SELECT	@err_cod_nbr = 25001,
					@err_cod_msg = "ERROR: Can Not Record the Login, character " + substring(@usr_acc_nam,@usr_acc_idx,1) + " is forbidden in " + @usr_acc_pwd
				RAISERROR @err_cod_nbr @err_cod_msg
				ROLLBACK TRANSACTION
				RETURN
			END
			SELECT	@usr_acc_idx = @usr_acc_idx + 1
		END
 
		IF EXISTS ( SELECT 'x' FROM inserted I, deleted D, xreg..usr X
			  WHERE  X.usr_pwd != I.usr_acc_pwd AND X.usr_nam = I.usr_acc_nam AND I.usr_acc_nam = D.usr_acc_nam)
		BEGIN
			EXEC	@err_cod_nbr = xreg..sam_upd_all_usr "UPD", @usr_acc_nam, @usr_acc_pwd
			IF 	(@err_cod_nbr > 0 )
			BEGIN
				SELECT  @err_cod_nbr = 25001,
		       	 		@err_cod_msg = "ERROR: Can Not Update the Login Password " + @usr_acc_nam
				RAISERROR @err_cod_nbr @err_cod_msg
				ROLLBACK TRANSACTION
				RETURN
			END
		END
/*
		UPDATE	xreg..usr
		SET	X.usr_pwd = IsNull(I.usr_acc_pwd, X.usr_pwd)
 
		FROM	inserted 	I,
			deleted		D,
			xreg..usr	X
 
		WHERE	X.usr_pwd    !=  I.usr_acc_pwd
		AND	X.usr_nam     =  I.usr_acc_nam
		AND	I.usr_acc_nam =  D.usr_acc_nam	
*/
	END
 
	/* propagate the login change to xreg..usr */
 
	EXEC	@err_cod_nbr = xreg..sam_upd_all_usr "UPD", @usr_acc_nam, NULL, NULL, @cus_typ_cod, NULL, @cus_ita_cod, NULL, @usr_acc_inf, NULL, NULL, NULL, NULL, NULL, @new_fst_nam, @new_lst_nam, @usr_ema_adr, @usr_tel_nbr, @srv_ptr_idt, @usr_mig_inf, @usr_cut_ovr
	IF 	(@err_cod_nbr > 0 )
	BEGIN
		SELECT  @err_cod_nbr = 25001,
	        	@err_cod_msg = "ERROR: Can Not Update the Login Details " + @usr_acc_nam
		RAISERROR @err_cod_nbr @err_cod_msg
		ROLLBACK TRANSACTION
		RETURN
	END
/*
	UPDATE	xreg..usr
	SET	X.usr_inf = IsNull(I.usr_acc_inf, X.usr_inf), X.cus_num = IsNull(I.cus_num_cod, X.cus_num),
		X.cus_typ = IsNull(IsNull((select C.cus_typ_cod from SAM_REF_all_cus C where C.cus_num_cod=I.cus_num_cod), I.cus_typ_cod), X.cus_typ),
		X.cus_nam = IsNull((select lower(C.cus_ita_cod) from SAM_REF_all_cus C where C.cus_num_cod=I.cus_num_cod), X.cus_nam), 
		X.usr_fna = IsNull(@new_fst_nam, X.usr_fna), X.usr_lna = IsNull(@new_lst_nam, X.usr_lna), X.usr_ema = IsNull(I.usr_ema_adr, X.usr_ema),
		X.usr_tel = IsNull(I.usr_tel_nbr, X.usr_tel), X.ptr_idt = IsNull(I.srv_ptr_idt, X.ptr_idt), X.cut_ovr = IsNull(convert(datetime, I.usr_cut_ovr), X.cut_ovr),
		X.mig_inf = IsNull(I.usr_mig_inf, X.mig_inf)
 
	FROM	inserted 	I,
		deleted		D,
		xreg..usr	X
 
	WHERE	(  IsNull(X.usr_inf, '-') != IsNull(I.usr_acc_inf, IsNull(X.usr_inf, '-'))
		OR IsNull(X.cus_num, '-') != IsNull(I.cus_num_cod, IsNull(X.cus_num, '-'))
		OR IsNull(X.cus_typ, '-') != IsNull(IsNull((select C.cus_typ_cod from SAM_REF_all_cus C where C.cus_num_cod=I.cus_num_cod), I.cus_typ_cod), IsNull(X.cus_typ, '-'))
		OR IsNull(X.cus_nam, '-') != IsNull((select lower(C.cus_ita_cod) from SAM_REF_all_cus C where C.cus_num_cod=I.cus_num_cod), IsNull(X.cus_nam, '-'))
		OR IsNull(X.usr_fna, '-') != IsNull(@new_fst_nam, IsNull(X.usr_fna, '-'))
		OR IsNull(X.usr_lna, '-') != IsNull(@new_lst_nam, IsNull(X.usr_lna, '-'))
		OR IsNull(X.usr_ema, '-') != IsNull(I.usr_ema_adr, IsNull(X.usr_ema, '-'))
		OR IsNull(X.usr_tel, '-') != IsNull(I.usr_tel_nbr, IsNull(X.usr_tel, '-'))
		OR IsNull(X.ptr_idt, '-') != IsNull(I.srv_ptr_idt, IsNull(X.ptr_idt, '-'))
		OR IsNull(X.mig_inf, '-') != IsNull(I.usr_mig_inf, IsNull(X.mig_inf, '-'))
		OR IsNull(X.cut_ovr, 'Jan 01 1970') != IsNull(convert(datetime, I.usr_cut_ovr), IsNull(X.cut_ovr, 'Jan 01 1970')) )
	AND	X.usr_nam     =  I.usr_acc_nam
	AND	I.usr_acc_nam =  D.usr_acc_nam	
*/
/* add main customer code for the new login */
 
	IF	NOT EXISTS (SELECT 'U' FROM inserted I, SAM_NET_usr_cus U WHERE U.usr_acc_nam = I.usr_acc_nam AND U.cus_num_cod = I.cus_num_cod)
	BEGIN
		INSERT	SAM_NET_usr_cus
		(
			usr_acc_nam,
			cus_num_cod,
			cus_cod_idx,
			cus_cod_pri
		)
		SELECT	DISTINCT
			I.usr_acc_nam,
			I.cus_num_cod,
			IsNull((SELECT convert(varchar, max(convert(int, P.cus_cod_idx))) FROM SAM_NET_usr_cus P WHERE P.usr_acc_nam = I.usr_acc_nam), '1'),
			'Y'
 
		FROM	inserted        I
 
		WHERE	NOT EXISTS ( SELECT 'U' FROM SAM_NET_usr_cus U WHERE U.usr_acc_nam = I.usr_acc_nam AND U.cus_num_cod = I.cus_num_cod )
	END
 
	/* on main customer change, switch the primay flag */
 
	IF	EXISTS (SELECT 'x' FROM inserted I, deleted D WHERE I.usr_acc_nam = D.usr_acc_nam AND I.cus_num_cod != D.cus_num_cod)
	BEGIN
		UPDATE	SAM_NET_usr_cus
		SET	U.cus_cod_pri = 'Y',
			U.ums_upd_dat = I.ums_upd_dat
 
       		FROM    inserted	I,
			deleted		D,
			SAM_NET_usr_cus U
 
		WHERE   U.cus_num_cod  = I.cus_num_cod
		AND	U.usr_acc_nam  = I.usr_acc_nam
		AND	I.cus_num_cod != D.cus_num_cod
        	AND     I.usr_acc_nam  = D.usr_acc_nam
 
		UPDATE	SAM_NET_usr_cus
		SET	U.cus_cod_pri = 'N',
			U.ums_upd_dat = D.ums_upd_dat
 
       		FROM    deleted		D,
			inserted        I,
			SAM_NET_usr_cus U
 
		WHERE   U.cus_num_cod  = D.cus_num_cod
		AND	U.usr_acc_nam  = D.usr_acc_nam
		AND	I.cus_num_cod != D.cus_num_cod
        	AND     I.usr_acc_nam  = D.usr_acc_nam
	END
 
	/* user login changed to ACTive */
 
	IF	EXISTS (SELECT 'x' FROM inserted I, deleted D WHERE I.usr_acc_nam = D.usr_acc_nam AND I.acc_sta_cod <> D.acc_sta_cod AND I.acc_sta_cod = 'ACT')
	BEGIN
		WAITFOR DELAY "00:00:00:2"
		INSERT SAM_NET_web_act
		SELECT	DISTINCT
			'I', 
			I.usr_acc_nam,
			U.srv_com_cod, 
			I.acc_typ_cod,
			I.usr_acc_pwd, 
			I.usr_acc_pwd, 
			IsNull(I.cus_typ_cod, 'SCITOR'),
			IsNull(I.cus_num_cod, '-'),
			I.usr_fst_nam,
			I.usr_lst_nam,
			I.usr_ema_adr, 
			I.usr_tel_nbr, 
			M.srv_ref_idt,
			getdate()
		FROM	inserted	I,
			deleted		D,
			SAM_NET_usr_mod	U,
			SAM_REF_all_mod	M,
			SAM_REF_all_srv S
		WHERE	S.srv_lda_ref = 'Y'
		AND	S.srv_app_idt = M.srv_ref_idt
		AND	M.srv_app_idt = U.srv_app_idt
		AND	M.srv_mod_idt = U.srv_mod_idt
		AND	U.usr_acc_nam = I.usr_acc_nam
		AND	I.usr_acc_nam = D.usr_acc_nam
		AND	I.acc_sta_cod <> D.acc_sta_cod
		AND	I.acc_sta_cod = 'ACT'
	END
 
	/* user login changed to not ACTive */
 
	IF	EXISTS (SELECT 'x' FROM inserted I, deleted D WHERE I.usr_acc_nam = D.usr_acc_nam AND I.acc_sta_cod <> D.acc_sta_cod AND D.acc_sta_cod = 'ACT')
	BEGIN
		WAITFOR DELAY "00:00:00:2"
		INSERT SAM_NET_web_act
		SELECT	DISTINCT
			'D', 
			I.usr_acc_nam,
			U.srv_com_cod, 
			D.acc_typ_cod, 
			I.usr_acc_pwd, 
			I.usr_acc_pwd, 
			IsNull(I.cus_typ_cod, 'SCITOR'),
			IsNull(I.cus_num_cod, '-'),
			I.usr_fst_nam,
			I.usr_lst_nam,
			I.usr_ema_adr, 
			I.usr_tel_nbr, 
			M.srv_ref_idt,
			getdate()
			FROM	deleted		D,
			inserted	I,
			SAM_NET_usr_mod	U,
			SAM_REF_all_mod	M,
			SAM_REF_all_srv S
		WHERE	S.srv_lda_ref = 'Y'
		AND	S.srv_app_idt = M.srv_ref_idt
		AND	M.srv_app_idt = U.srv_app_idt
		AND	M.srv_mod_idt = U.srv_mod_idt
		AND	U.usr_acc_nam = D.usr_acc_nam
		AND	I.usr_acc_nam = D.usr_acc_nam
		AND	I.acc_sta_cod <> D.acc_sta_cod
		AND	D.acc_sta_cod = 'ACT'
	END
 
 
	/*
	** Update User details into LDAPs
	** ==============================
	*/
 
	IF	EXISTS (SELECT 'x' FROM inserted I, deleted D 
			WHERE   (   I.usr_acc_pwd != D.usr_acc_pwd
                        	OR  I.cus_typ_cod != D.cus_typ_cod OR I.cus_num_cod != D.cus_num_cod
                        	OR  I.usr_fst_nam != D.usr_fst_nam OR I.usr_lst_nam != D.usr_lst_nam
                        	OR  I.usr_ema_adr != D.usr_ema_adr OR I.usr_tel_nbr != D.usr_tel_nbr )
				AND I.usr_acc_nam = D.usr_acc_nam AND I.acc_sta_cod = 'ACT' AND D.acc_sta_cod = 'ACT')
	BEGIN
		WAITFOR DELAY "00:00:00:2"
		INSERT SAM_NET_web_act
		SELECT 'U', 
			I.usr_acc_nam,
			U.srv_com_cod, 
			I.acc_typ_cod, 
			I.usr_acc_pwd, 
			D.usr_acc_pwd, 
			I.cus_typ_cod,
			I.cus_num_cod,
			I.usr_fst_nam,
			I.usr_lst_nam,
			I.usr_ema_adr, 
			I.usr_tel_nbr, 
			max(S.srv_app_idt),
			getdate()
		FROM 	deleted  	D,
			inserted	I,
			SAM_NET_usr_mod U,
			SAM_REF_all_mod M,
			SAM_REF_all_srv S
		WHERE   S.srv_lda_ref = 'Y'
		AND	S.srv_app_idt = M.srv_ref_idt
		AND	M.srv_app_idt = U.srv_app_idt
		AND	M.srv_mod_idt = U.srv_mod_idt
		AND	U.usr_acc_nam = I.usr_acc_nam
		AND	(  I.usr_acc_pwd != D.usr_acc_pwd 
			OR I.cus_typ_cod != D.cus_typ_cod OR I.cus_num_cod != D.cus_num_cod 
			OR I.usr_fst_nam != D.usr_fst_nam OR I.usr_lst_nam != D.usr_lst_nam 
			OR I.usr_ema_adr != D.usr_ema_adr OR I.usr_tel_nbr != D.usr_tel_nbr )
		AND	I.usr_acc_nam = D.usr_acc_nam
		AND	I.acc_sta_cod='ACT'
		AND	D.acc_sta_cod='ACT'
 
		GROUP BY
			I.usr_acc_nam,
			U.srv_com_cod,
			I.acc_typ_cod,
			I.usr_acc_pwd,
			D.usr_acc_pwd,
			I.cus_typ_cod,
			I.cus_num_cod,
			I.usr_fst_nam,
			I.usr_lst_nam,
			I.usr_ema_adr,
			I.usr_tel_nbr,
			I.ums_upd_dat
	END
END
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 17h36   #16
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
A priori le pb viendrait d'une 2ème base de données que je ne possède pas et utilisée dans les triggers.
Je marque le sujet en Résolu.
Je le réouvrirai p-e dans les prochains jour

Merci à tous les 2 pour votre aide !
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 21h42   #17
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
le DBCC checkcatalog vérifie que les métadonnées (le contenu des tables système) sont correctes par rapport aux objets existants.

A mon sens, il n'a pas d'action corrective, mais votre test semblerait démontrer le contraire.

Si la ligne de commande passe, c'est déjà ça : reste à voir ce que l'appli (de quel appli s'agit-il) envoie réellement comme ordre... à auditer sans doute.
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2007, 16h49   #18
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
merci pour la réponse et pour votre aide en tous les cas.
Goldorak2 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 19h17.


 
 
 
 
Partenaires

Hébergement Web