Постоянная блокировка таблицы SQL из C # - PullRequest
0 голосов
/ 09 июня 2010

Я пытаюсь создать постоянную блокировку SQL (SQL Server 2005) на уровне таблицы. Я не обновляю / не запрашиваю указанную таблицу, но мне нужно запретить стороннему приложению обновлять заблокированную таблицу как средство предотвращения публикации транзакций (таблица, которую я хочу заблокировать, является ключом в их транзакции, который мешает моя обработка).

Исходя из моего опыта, таблица блокируется только на время конкретной транзакции. Есть идеи?

Сторонний разработчик зарегистрировал эту функцию как усовершенствование, но, поскольку они находятся в процессе развертывания основного выпуска, я могу ожидать, по крайней мере, 6 месяцев для этого. Я знаю, что это не очень хорошее решение, так как их программное обеспечение упадет, но оно достаточно критично, и мы готовы смириться с последствиями.

Ответы [ 2 ]

0 голосов
/ 10 июня 2010

Переместите таблицу в другую файловую группу, затем измените файловую группу только для чтения.Таблица будет действовать только для чтения:

ALTER DATABASE dbName 
   ADD FILEGROUP ReadOnlyFG;
GO

ALTER DATABASE dbName 
   ADD FILE (
    NAME = ...,
    FILENAME = '...')
   TO FILEGROUP ReadOnlyFG;
GO

ALTER TABLE tableName MOVE TO ReadOnlyFG;
GO

ALTER DATABASE dbName
   MODIFY FILEGROUP ReadOnlyFG READONLY;
0 голосов
/ 09 июня 2010

переименуйте таблицу, и когда третья сторона будет готова, переименуйте ее обратно в то, что должно быть

...