Чего вы хотите достичь?
- Хотите сделать всю базу данных доступной только для чтения? Вы определенно можете сделать это
- Хотите ли вы, чтобы новые клиенты не могли подключаться к базе данных? Вы определенно можете сделать это тоже
Но на самом деле не существует понятия «блокировка базы данных», которая бы позволяла использовать базу данных только одному человеку. По крайней мере, не в SQL Server, не то, что я знаю. В любом случае, что тебе это даст?
Если вы хотите выполнить миграцию данных из этой базы данных, то, вероятно, будет достаточно перевести базу данных в режим только для чтения (или создать ее моментальную копию).
ОБНОВЛЕНИЕ: для упомянутого вами сценария (захват данных для людей с ноутбуками, а затем повторная синхронизация) вы обязательно должны проверить ADO.NET Sync Services - это именно для этого он и создан!
Даже если вы не можете использовать службы синхронизации ADO.NET, вы все равно должны иметь возможность выборочно и интеллектуально обновлять центральную базу данных, используя изменения с ноутбуков, без блокировки всей базы данных. В SQL Server есть несколько способов обновления строк, даже когда база данных используется - на самом деле нет необходимости полностью блокировать всю базу данных только для обновления нескольких строк!
Например: у вас должен быть столбец TIMESTAMP
(или ROWVERSION
) в каждой из ваших таблиц данных, который позволит вам легко увидеть, есть ли какие-либо изменения произошло вообще. Если поле TIMESTAMP (которое на самом деле является просто счетчиком - оно не имеет ничего общего с датой или временем) не изменилось, строка не изменилась и, следовательно, не нуждается в рассмотрении для обновления.