none
SQL Server Migration Assistant (SSMA) Primary Key (GUID) Nullable RRS feed

  • 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) 

    Freitag, 15. März 2013 09:08

Antworten

  • Konnte das Problem über einen Umweg lösen. Vielleicht gibt es eine bessere Lösung.

    1. SQL Server 2005 Express installieren
    2. Upsizing aus Access 2007
    3. Sicherung in SQL Server 2005
    4. Wiederherstellung in SQL Server 2012
    5. Ändern der Eigenschaften auf SQL Server 2012
    Freitag, 15. März 2013 18:38

Alle Antworten

  • Konnte das Problem über einen Umweg lösen. Vielleicht gibt es eine bessere Lösung.

    1. SQL Server 2005 Express installieren
    2. Upsizing aus Access 2007
    3. Sicherung in SQL Server 2005
    4. Wiederherstellung in SQL Server 2012
    5. Ändern der Eigenschaften auf SQL Server 2012
    Freitag, 15. März 2013 18:38
  • 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 during
    conversion.
    Information: A2SS0029: Index name 'ID' was changed during conversion.
     Warnings: A2SS0016: Column 'ID' of the primary key is nullable, which
    SQL Server does not allow. The nullable flag was removed from the target
    column to avoid problems during loading database objects into SQL
    Server. If there are rows that contain NULL values, you might encounter
    problems during data migration.
    Conversion finished with 0 errors, 1 warnings, and 2 informational
    messages."
     
    Gibt es vielleicht in der Quell-Tabelle Null-Werte in der Spalte?
     
     
    Montag, 18. März 2013 14:51
  • 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

    Montag, 18. März 2013 19:09
  • 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 es
    gibt schon paar Unterschiede. Und Ziel war ein 2008er Server.
    Hast du mal geschaut, ob es in deiner Access-Tabelle evtl einen oder
    mehrere Nullwerte in der Spalte gibt? Vielleicht scheitert die mstellung
    ja an der Existenz eines solchen - Access kann wohl Null als Wert einer
    PK-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-Server
    durchprobieren.
    Versuchsweise kannst du ja mal eine Testdatenbank mit einer Tabelle und
    einem entsprechenenden PK anlegen.
     
    Dienstag, 19. März 2013 07:36