Benutzer mit den meisten Antworten
SQL Server Migration Assistant (SSMA) Primary Key (GUID) Nullable

Frage
-
Bei der Übertragung einer ACCESS 2007 Datenbank in SQL Server 2012 Express (zum Testen) über SSMA ergibt sich folgendes Problem:
Bei Access Tabellen, die als Primärschlüssel eine GUID, also nicht int, verwenden interpretiert der SSMA, das Feld als nullable = true. Demzufolge kann die Tabelle nicht migriert werden. Genau dieses Feld kann man aber leider auch nicht vor der Synchronisation ändern, alle anderen Felder hingegen schon.
In Access ist der Primärschlüssel immer automatisch nullable = false.
Demnach sehe ich im Moment keine Möglichkeit mittels SSMA zu migrieren. Bei Gesprächen mit Kollegen ergab sich, dass dies eher ein Fehler von SSMA sein muss, da hier ja nichts einstellbar ist und die Feldinterpretation von SSMA aufgrund der Primärschlüsseleigenschaft einfach falsch sein muss.
Der Fehler ist auch mit einer neu erstellten ACCESS Datenbank und einer Tabelle die als Primärschlüssel einen GUID hat, reproduzierbar.
Ich würde mich sehr freuen, wenn mir hier jemand helfen könnte.
Hier noch ein paar Angaben zum Testumfeld:
- Quelldatenbank Access 2007
- SQL Server Express 2012
- Betriebssystem Windows 7 PRO auf VMWARE
- SSMA 5.2 (Aktuell)
Antworten
-
Konnte das Problem über einen Umweg lösen. Vielleicht gibt es eine bessere Lösung.
- SQL Server 2005 Express installieren
- Upsizing aus Access 2007
- Sicherung in SQL Server 2005
- Wiederherstellung in SQL Server 2012
- Ändern der Eigenschaften auf SQL Server 2012
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Montag, 18. März 2013 08:25
Alle Antworten
-
Konnte das Problem über einen Umweg lösen. Vielleicht gibt es eine bessere Lösung.
- SQL Server 2005 Express installieren
- Upsizing aus Access 2007
- Sicherung in SQL Server 2005
- Wiederherstellung in SQL Server 2012
- Ändern der Eigenschaften auf SQL Server 2012
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Montag, 18. März 2013 08:25
-
Warum kannst du den Feld-Typ GUID nicht ändern?Was gibt dir SSMA denn als Quell- und Ziel-Typ an?Was ist beim Type-Mapping eingestellt.Also bei einem Test hat es bei mir funktioniert:"Starting conversion...Analyzing metadata...Converting table Database11.[Tabelle1] ...Information: A2SS0029: Primary key name 'PrimaryKey' was changed duringconversion.Information: A2SS0029: Index name 'ID' was changed during conversion.Warnings: A2SS0016: Column 'ID' of the primary key is nullable, whichSQL Server does not allow. The nullable flag was removed from the targetcolumn to avoid problems during loading database objects into SQLServer. If there are rows that contain NULL values, you might encounterproblems during data migration.Conversion finished with 0 errors, 1 warnings, and 2 informationalmessages."Gibt es vielleicht in der Quell-Tabelle Null-Werte in der Spalte?
-
Das ist ja sehr interessant. Bei Ihnen erkennt, wie bei mir auch, SSMA irrtümlich ebenfalls den Primary key als nullable. Der Unterschied ist, dass es bei Ihnen eine saubere Umwandlung gibt, diese erfolgt bei mir nicht erfolgreich, hier bricht SSMA ab und erstellt erst gar keine Tabelle. Null-Werte können in der Tabelle nicht vorkommen, da ich zum testen auch ausprobiert habe die Tabellen ohne jegliche Werte zu übernehmen.
Es ist wirklich interessant, warum bei Ihnen die conversion funktioniert. Haben Sie auch ACC 2007 und SQL Server 2012 EXPRESS verwandt ?
Ich werde auch nochmal die Optionen durchsehen, vielleicht gibt es da noch eine Einstellung. Die Übertragung erkennt er eigentlich richtig GUID zu Uniqueidentifier. Könnte ich auch garnicht ändern.
Vielen Dank für Ihre Unterstützung.
Viele Grüße
-
Am 18.03.2013 20:09, schrieb MAB4774:> Das ist ja sehr interessant. Bei Ihnen erkennt, wie bei mir auch, SSMA> irrtümlich ebenfalls den Primary key als nullable. Der Unterschied ist,> dass es bei Ihnen eine saubere Umwandlung gibt, diese erfolgt bei mir> nicht erfolgreich, hier bricht SSMA ab und erstellt erst gar keine> Tabelle. Null-Werte können in der Tabelle nicht vorkommen, da ich zum> testen auch ausprobiert habe die Tabellen ohne jegliche Werte zu übernehmen.>> Es ist wirklich interessant, warum bei Ihnen die conversion> funktioniert. Haben Sie auch ACC 2007 und SQL Server 2012 EXPRESS verwandt ?Naja nicht ganz ... Acc2010, sollte zwar eigentlich gleich sein aber esgibt schon paar Unterschiede. Und Ziel war ein 2008er Server.Hast du mal geschaut, ob es in deiner Access-Tabelle evtl einen odermehrere Nullwerte in der Spalte gibt? Vielleicht scheitert die mstellungja an der Existenz eines solchen - Access kann wohl Null als Wert einerPK-Spalte haben.> Ich werde auch nochmal die Optionen durchsehen, vielleicht gibt es da> noch eine Einstellung. Die Übertragung erkennt er eigentlich richtig> GUID zu Uniqueidentifier. Könnte ich auch garnicht ändern.Man müsste wahrscheinlich mal einige Kombinationen Access/SQL-Serverdurchprobieren.Versuchsweise kannst du ja mal eine Testdatenbank mit einer Tabelle undeinem entsprechenenden PK anlegen.