Bonjour,
J'ai une question qui me trotte dans la tête depuis pas mal de temps concernant les schémas et user dans PowerDesigner.
Si je me trompe, faut me corriger car je ne sais pas.
Dans PowerDesigner, la notion de schéma me semble ne pas exister mais peut être assimilé à la notion de ‘user’ (owner). Correcte ?
Donc dans PD 1.5.2 , c'est toujours la vielle notion des owner pour une table et non pas des schémas qui est apparu avec la version 2005 de sql server.
Par contre ça correspond à 100% avec la notion d'oracle. Si c’est correct.

D’ailleurs cette notion pose problème lors de la génération SQL pour sql server 2008 R2. Car parfois, il confond user et schéma.
Exemple pour créer une table avec ‘Extended Properties ’ comme une description en choisissant le DBMS ‘SQLSERVER 2008’
Voici ce qu’ils génèrent

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
execute sp_addextendedproperty 'MS_Description', 
   '!!! multi Countries',
   'user', 'batch', 'table', 'tbl_Computation', 'column', 'Computation_bmk_Output_Countries'
go
Pour faire plus claire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
execute sys.sp_addextendedproperty 
    @name    = 'MS_Description', 
    @value      = 'Replace the old batchID',    
    @level0type = 'user', @level0name  = 'batch', 
    @level1type = 'table'  , @level1name  = 'tbl_Computation'
Go
Mais en 2008 pas compatible car le user est remplacé par schéma
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
execute sys.sp_addextendedproperty 
    @name    = 'MS_Description', 
    @value      = 'Replace the old batchID',    
    @level0type = 'SCHEMA', @level0name  = 'batch', 
    @level1type = 'table'  , @level1name  = 'tbl_Computation'
Go
Ceci on peut changer les setting dans ‘DBMS properties’
MSSQLSRV2008::Script\Objects\Table\TableComment

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
[%OWNER%?[.O:[execute ][exec ]][sys.]sp_addextendedproperty [%R%?[@%S%=][N]]'MS_Description', 
   [%R%?[@%S%=][N]]%.q:COMMENT%,
   [%R%?[@%S%=][N]]'[.O:[user][schema]]', [%R%?[@%S%=][N]]%.q:OWNER%, [%R%?[@%S%=][N]]'table', [%R%?[@%S%=][N]]%.q:TABLE%
:declare @CurrentUser sysname
select @CurrentUser = user_name()
[.O:[execute ][exec ]][sys.]sp_addextendedproperty [%R%?[@%S%=][N]]'MS_Description', 
   [%R%?[@%S%=][N]]%.q:COMMENT%,
   [%R%?[@%S%=][N]]'user', [%R%?[@%S%=][N]]@CurrentUser, [%R%?[@%S%=][N]]'table', [%R%?[@%S%=][N]]%.q:TABLE%
]
Celui que j’ai modifié
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
[%OWNER%?[.O:[execute ][exec ]][sys.]sp_addextendedproperty [%R%?[@%S%=][N]]'MS_Description', 
   [%R%?[@%S%=][N]]%.q:COMMENT%,
   [%R%?[@%S%=][N]]'schema', [%R%?[@%S%=][N]]%.q:OWNER%, [%R%?[@%S%=][N]]'table', [%R%?[@%S%=][N]]%.q:TABLE%
:declare @CurrentUser sysname
select @CurrentUser = user_name()
[.O:[execute ][exec ]][sys.]sp_addextendedproperty [%R%?[@%S%=][N]]'MS_Description', 
   [%R%?[@%S%=][N]]%.q:COMMENT%,
   [%R%?[@%S%=][N]]'user', [%R%?[@%S%=][N]]@CurrentUser, [%R%?[@%S%=][N]]'table', [%R%?[@%S%=][N]]%.q:TABLE%
]
Mais aussi on peut changer le stéréotype du "user" en Schéma qui pour moi n'est pas correcte avec le philosophie MS


J'aimerais avoir votre avis.

Merci encore