Que voulez-vous réaliser?
- Voulez-vous rendre la base de données entière en lecture seule? Vous pouvez certainement le faire
- Voulez-vous empêcher les nouveaux clients de se connecter à la base de données? Vous pouvez certainement le faire aussi
Mais il n'y a vraiment pas de concept de "verrouillage de base de données" en permettant seulement à une personne d'utiliser la base de données. Au moins pas dans SQL Server, pas que je sache. A quoi cela vous ferait-il, d'ailleurs?
Si vous souhaitez effectuer une migration de données hors de cette base de données, la configuration de la base de données en mode lecture seule (ou la création d'une copie d'instantané) sera probablement suffisante et facile.
MISE À JOUR: pour le scénario que vous mentionnez (saisir les données pour les personnes avec des ordinateurs portables, puis re-syncronize), vous devez absolument vérifier ADO.NET Sync Services - c'est exactement ce qu'il fait pour!
Même si vous ne pouvez pas utiliser ADO.NET Sync Services, vous devez toujours pouvoir mettre à jour de manière sélective et intelligente votre base de données centrale avec les modifications apportées par les ordinateurs portables sans verrouiller toute la base de données. SQL Server dispose de plusieurs méthodes pour mettre à jour les lignes même lorsque la base de données est en cours d'utilisation. Il n'est vraiment pas nécessaire de verrouiller complètement la base de données entière pour mettre à jour quelques lignes! Par exemple: vous devriez avoir une colonne TIMESTAMP
(ou ROWVERSION
) sur chacune de vos tables de données, ce qui vous permettrait facilement de voir si des changements sont survenus. Si le champ TIMESTAMP (qui n'est en réalité qu'un compteur - il n'a rien à voir avec la date ou l'heure) n'a pas changé, la ligne n'a pas changé et n'a donc pas besoin d'être considérée pour une mise à jour.
Parfois, s'éloigner est la bonne réponse –