Pergunta

Estou tentando criar um bloqueio persistente SQL (SQL Server 2005) em um nível de tabela. Não estou atualizando/consultando a tabela especificada, mas preciso impedir que um aplicativo de terceiros atualize a tabela bloqueada como um meio de impedir que as transações sejam publicadas (a tabela que desejo travar é a chave em sua transação que interfere com meu processamento).

Pela minha experiência, a tabela está bloqueada apenas para o tempo que uma transação específica está ocorrendo. Alguma ideia?

O desenvolvedor de terceiros registrou esse recurso como um aprimoramento, mas como eles estão no meio de lançamento de um grande lançamento, posso esperar esperar pelo menos 6 meses por isso. Sei que essa não é uma ótima solução, já que o software deles cairá, mas é de uma natureza crítica o suficiente que estamos dispostos a conviver com as consequências.

Foi útil?

Solução

Mova a tabela para um grupo de arquivos diferente e altere o grupo de arquivos para somente leitura. A tabela estará em vigor somente leitura:

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;

Outras dicas

Renomeie a tabela e quando a terceira parte estiver pronta renomeá -la de volta ao que deveria ser

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top