Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all articles
Browse latest Browse all 1772

Umstieg GUID --> IDENTITY oder Sequenz

$
0
0

Hallo,

ich habe eine Datenbank (MS SQL SERVER 2008 R2) mit zwei großen Tabellen, die auch stark anwachsen und dort wird der Primärschlüssel als "uniqueidentifiert" definert. Die Software erzeugt die GUIDs selbst, was eine schöne Sache ist. Nicht so schön ist natürlich die Tatsache das es sich bei der Tabelle um Datensätze mit Zeitbezug handelt und alle Abfragen zeitliche Bereiche umfasst und die Indizierung bei GUIDs bewirkt dann ein Kreuz und Quer für alle Abfragen.

Also sollte ich das wohl umstellen. Eine durchgehende Sequenz ist mir egal.

Was wäre da der bessere Weg: int  mit Identity(startwert, increment) oder eine Sequenz, die von den Clients abgefragt wird. Das dürfte meinem bisherigen Weg mit den GUIDs am nächsten kommen. Nachdem ich nämlich ein Eintrag in Tabelle1 mache, benötige ich den Primärschlüssel für mehrere Datensätze in Tabelle2, wobei ich auch dort Primärschlüssel benötige. Also dann zwei Sequenzen mit Autowerten.

Und das Hauptproblem: Wie vom Stand mit GUIDs auf INT migrieren?

Tabelle1:

mytabelle1_guid erstmal als Primärschlüssel lassen.
mytabelle1_id als int anlegen. NULL zulassen.

Tabelle2:

mytabelle2_guid erstmal als Primärschlüssel lassen.
mytabelle1_guid_fremdschluessel erstmal lassen.
mytabelle2_id als int anlegen. NULL zulassen
mytabelle1_id_fremdschluessel anlegen. NULL zulassen.

Jetzt jeden Datensatz aus Tabelle1 lesen, sortiert nach Buchungsdatum und mytabelle1_id mit Sqeuenz1 füllen. Dann abfragen, ob Datensätze in Tabelle2 vorhanden sind (mytabelle1_guid_fremdschluessel) und wenn ja, dort mytabelle2_id mit Sequenz2 füllen. In mytabelle1_id_fremdschlüssel die zugehörige id aus tabelle1 eintragen.

Zum Schluss dann die GUIDs löschen und Primärschlüssel wählen.

Hmmmm.... Oder das über neue Tabellen lösen, nach der Migration die "alten" Tabellen löschen und "neue" Tabelle umbenennen.

Oder gibt es da eine "schönere" Lösung mit bordeigenen Mitteln des Sql Servers.

mfg

EDIT 02.04.2013, 12:23: Sequenzen gibt es erst ab SQL Server 2012. Kann ich also nicht nutzen.

Viewing all articles
Browse latest Browse all 1772

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>