Domanda

Sto cercando di creare uno SQL persistente (SQL Server 2005) blocco su un livello di tabella. Non sto aggiornando / interrogando la tabella specificata, ma ho bisogno di evitare che un'applicazione di terze parti da aggiornare la tabella bloccata come un mezzo per impedire le operazioni di essere pubblicato (la tabella desidero blocco è la chiave sulla loro transazione che interferisce con la mia trasformazione).

Dalla mia esperienza la tabella è bloccata solo per il tempo di una specifica operazione è in corso. Tutte le idee?

Il 3 ° sviluppatore partito ha registrato questa caratteristica come un miglioramento, ma dal momento che sono nel bel mezzo di stendere una major release posso aspettare di attendere almeno 6 mesi per questo. So che questa non è una grande soluzione, dal momento che il loro software cadrà sopra, ma è di natura abbastanza critico che siamo disposti a vivere con le conseguenze.

È stato utile?

Soluzione

Spostare la tabella in un gruppo di file diverso, quindi modificare il gruppo di file di sola lettura. La tabella sarà a tutti gli effetti di sola lettura:

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;

Altri suggerimenti

rinominare la tabella e quando il 3 ° partito è pronto rinomina di nuovo a quello che dovrebbe essere

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top