2013-08-09 11 views
8

Ich entwickle eine Website, die Entity Framework-Code zuerst mit Migrationen verwendet. Nach jeder größeren Veröffentlichung nehme ich eine Kopie der Produktionsdaten und richte sie in meiner Entwicklungsumgebung ein. Ich habe festgestellt, dass, um eine Produktionsdatenkopie mit Migrationen zu verwenden, die __MigrationHistory Tabelle aus dem alten Entwicklungsdatenbankabbild in die Produktionsdatenbankkopie kopiert werden muss.Wie kann ich eine SQL Server-Systemtabelle erstellen

Das funktioniert gut, bis auf ein lästiges Detail: die Tabelle _MigrationHistory kommt als Benutzertabelle anstelle einer Systemtabelle vor. Dies ist kein ernsthaftes Problem, solange ich mich erinnere, es aus meinen Datenbank-Diffs herauszufiltern. Aber ich würde es vorziehen, wenn die neue Tabelle __MigrationHistory eine Systemtabelle wäre, genau wie in einer Datenbank, die durch EF-Migrationen erstellt wurde.

Gibt es eine Möglichkeit, ich kann eine SQL Server-Tabelle erstellen oder kopieren, so dass es scheint, eine Systemtabelle zu sein?

Antwort

1

Von dem, was ich verstehe, ist dies keine empfohlene Praxis.

See TechNet Article

Als eine mögliche Lösung, schlage ich vor, ein neues Schema, wie ETL oder Mig erklärt und Zuweisen von Sicherheitsmaßnahmen zu diesem Schema, wenn Sie besorgt über solche Dinge. Dies würde dazu dienen, die '_MigrationHistory'-Tabelle von den übrigen Benutzertabellen zu trennen.

Bearbeite: Gefunden nur in einer anderen Frage, vielleicht hilfreich, wenn Sie auf dieses tun wollen. StackOverflow

+0

Ich markiere dies als die Antwort wegen der Verweis auf die andere Frage, die ich nicht finden konnte (diese Frage ist wohl ein Duplikat). Ich stimme zu, dass die Verwendung von sp_ms_marksystemobject mit äußerster Vorsicht verwendet werden sollte, aber ich würde argumentieren, dass dies in diesem Szenario sinnvoll ist. –

5

Verwenden Sie den folgenden Befehl aus Ihrer Tabelle Systemobjekt ändern. So wird es dann in Systemobjekten angezeigt.

Verwandte Themen