2013-08-09 12 views
8

Sto sviluppando un sito che utilizza il codice Entity Framework prima con le migrazioni. Dopo ogni versione principale, prendo una copia dei dati di produzione e la installo nel mio ambiente di sviluppo. Ho scoperto che per poter utilizzare una copia dei dati di produzione con le migrazioni, è necessario copiare la tabella __MigrationHistory dalla vecchia immagine del database di sviluppo alla copia del database di produzione.Come creare una tabella di sistema di SQL Server

Questo funziona correttamente, tranne per un dettaglio fastidioso: la tabella _MigrationHistory si presenta come una tabella utente anziché una tabella di sistema. Questo non è un problema serio finché mi ricordo di filtrarlo dalle mie differenze di database. Ma preferirei che la nuova tabella __MigrationHistory fosse una tabella di sistema, così come è in un database creato dalle migrazioni EF.

C'è un modo per creare o copiare una tabella di SQL Server in modo che sembri essere una tabella di sistema?

risposta

1

Da quello che ho capito, questa non è una pratica suggerita.

See TechNet Article

come una possibile soluzione, vi suggerisco di dichiarare un nuovo schema, come ad esempio ETL o Mig, e l'assegnazione di misure di sicurezza per quello schema, se siete preoccupati per queste cose. Ciò servirebbe a separare la tabella '_MigrationHistory' dal resto delle tabelle utente.

Modifica: Ho appena trovato questo in un'altra domanda, forse utile se sei deciso a farlo. StackOverflow

+0

Sto contrassegnando questo come la risposta a causa del riferimento all'altra domanda, che non sono riuscito a trovare (questa domanda è discutibilmente un duplicato). Sono d'accordo che l'uso di sp_ms_marksystemobject dovrebbe essere usato con estrema cautela, ma direi che è ragionevole in questo scenario. –

5

Utilizzare il comando seguente per modificare la tabella in oggetto di sistema. Quindi apparirà in oggetti di sistema.

EXEC sys.sp_MS_marksystemobject _MigrationHistory 
Problemi correlati