Problème :
Lorsque deux utilisateurs ou plus accèdent aux mêmes tables et classes de caractéristiques dans la même base de données Microsoft SQL Server, les performances se dégradent sensiblement par rapport à l'accès par un seul utilisateur. Ce phénomène est déjà compréhensible avec des fonctions simples comme le déplacement de la section de carte, mais il affecte toutes les fonctions avec accès à la base de données.
Cause :
Ce comportement est enregistré comme limite connue chez Esri sous "#BUG-000132672 Performance decreases while users simultaneously access the same data". La cause est un comportement de Microsoft SQL Server qu'Esri décrit comme suit :
This issue is caused by a Microsoft behavior where Cursor + SELECT operations forces some strong name validations and causes mismatch between cached SCHEMAID + current user's default SCHEMAID. A recompilation is triggered based on that mismatch and is the cause of the performance issue.
Solution :
Ce comportement se produit lorsque chaque utilisateur possède son propre schéma dans Microsoft SQL Server. Si tous les utilisateurs utilisent un schéma commun (par exemple, DBO ou SDE), ce comportement ne se produit pas.
Limitation : L'utilisation d'un schéma uniforme implique la restriction que les utilisateurs ne peuvent pas créer leurs propres tables. Dans UT for ArcGIS, la création de tables pour la mise en mémoire tampon d'objets UT (RESTAB) est concernée par cette restriction. |
Personnalisation dans une installation existante :
Dans Microsoft SQL Server Management Studio vous pouvez ajuster ceci après.
Adaptation des scripts de création d'utilisateurs :
Si des utilisateurs doivent être créés avec les scripts fournis par UT for ArcGIS, le script UT.create_user.MSSQL.sql doit être adapté. Pour ce faire, les lignes suivantes doivent être supprimées ou commentées.
ALTER USER [$(USER_NAME)] WITH DEFAULT_SCHEMA=[$(USER_NAME)];
GO
Adaptation en cas d'utilisation de SSO :
En cas d'utilisation de Single Sign On (SSO), le script UT.utusradm_procedures.MSSQL.sql doit être adapté. Dans la procédure ARCFMUT_CREATE_USER, les lignes suivantes doivent être supprimées.
set @CreateStatement = N'ALTER USER [' + @UserName + N'] WITH DEFAULT_SCHEMA=[' + @UserName + N']';
EXEC [$(USER_NAME)].ArcFMUT_EXEC_ANYSQL @CreateStatement;
La procédure ainsi modifiée doit ensuite encore être transférée dans la base de données, soit via le script UT.setup_SDE_MSSQL.bat, soit manuellement via selcmd.
sqlcmd -S %SQLSERVER% -H %SQLHOST% -d %SQLDB% %SQLADMIN% -i UT.sde_procedures.MSSQL.sql -o %SQLDBPATH%UT.sde_procedures.MSSQL.sql.log -v SQLDB=%SQLDB% SDE_OWNER=%SDE_OWNER% SQLADMIN_USER=%SQLADMIN_USER%
Commentaires
0 commentaire
Vous devez vous connecter pour laisser un commentaire.