Mon DBA principal m'a dit que l'exécution de SQL Query par défaut ne verrouille pas la table.
J'avais des problèmes avec mon rapport SQL Server Reporting Services (SSRS) qui semble avoir des problèmes de verrouillage et des erreurs.
J'ai fait des recherches sur Google, mais je n'ai rien trouvé.
Les rapports SSRS verrouillent-ils les tables interrogées?
Existe-t-il une documentation MSDN qui documente spécifiquement ce comportement?
sql-server-2008
locking
melaos
la source
la source
SET TRANSACTION ISOLATION LEVEL
par exempleREAD UNCOMMITTED
si cela ne vous dérange pas de risquer quelques lectures sales.Réponses:
Réponse courte: Non
Plus long...
SQL Server ne sait pas que SSRS lui envoie une requête. Ainsi, la requête de SSRS s'exécutera comme n'importe quelle autre requête.
Il est plus probable que l'optimiseur de requêtes décide d'utiliser un verrou de table pour la requête SSRS. bien sûr, cela pourrait être un problème différent, mais c'est une question différente
la source
C'est vrai. Cependant, cela ne signifie pas qu'une requête ne peut pas verrouiller une table.
SSRS obtient les données utilisées pour rendre le rapport en exécutant une requête ou une procédure stockée sur la base de données.
Cette requête est définie par le développeur, et elle peut finir par verrouiller une table (ou des tables), selon le niveau d'isolement et le nombre de lignes impliquées. (En fait, il peut y avoir des cas où vous voudriez le faire exprès .) L'essentiel est que c'est au développeur comment le verrouillage fonctionne pour la requête. SSRS ne peut pas résoudre ce problème pour vous. C'est pourquoi il n'y a pas de documentation.
Considérez (par exemple):
READ UNCOMMITTED
si les lectures sales sont correctesla source
Comment savez-vous qu'il existe un verrou lorsque le rapport est en cours d'exécution? Je vous suggère de vérifier la requête / le processus stocké qui est la source du rapport et de vous assurer qu'il fonctionne bien par lui-même.
Si vous êtes sûr que la requête source fonctionne correctement, essayez d'identifier le problème à l'aide du profileur SQL Server. Le lien ci-dessous pourrait vous aider:
/programming/9107383/sql-server-profiler-capture-calls-to-your-databases-stored-procs-during-ssrs
la source