J'ai certaines requêtes SQL Compact qui créent des tables dans la transaction. C'est principalement parce que j'ai besoin de simuler des tables temporaires, que SQL Compact ne supporte pas. Je fais cela en créant une vraie table, puis en la déposant à la fin de la transaction.Sql Compact et __sysobjects
Cela fonctionne principalement. Parfois, cependant, lors de la création des tables, Sql Compact va essayer d'acquérir des verrous au niveau PAGE sur la table __sysobjects. Si plusieurs requêtes simultanées sont en cours d'exécution pour créer des tables "temp", la tentative d'acquisition d'un verrou de page peut entraîner un verrou mort suivi d'une exception SqlLockTimeout.
Pour les tables normales, je pourrais corriger cela en utilisant un indice "with (rowlock)". Cependant, parce que je n'écris pas la requête à insérer dans __sysobjets (SQL Server le fait en réponse à "create table") je ne peux pas le faire.
Est-ce que quelqu'un sait d'une manière que je pourrais contourner ceci?
J'ai pensé à retirer la création de table de la transaction, mais cela ouvre la possibilité de tables temporaires fantômes que je devrais ensuite nettoyer régulièrement. Idéalement, j'aimerais éviter cela si possible.
Malheureusement pas. SQL compact ne prend pas en charge les variables de table non plus. –