Update - SQL Server Migration Assistant für Access - 32 / 64 Bit Problematik

see below the english translation of the article

Dieser SSMA 7.6 64bit Info Artikel beschreibt aus MS Sicht, was zu tun ist, um mit dem 64-bit Tool zu arbeiten. Dieser Artikel verschweigt die notwendige Option /quiet...

 der Workaround mit der Version SSMA 7.3 32-bit ist nicht notwendig, wenn vor der Installation der 64-bit Version folgendes beachtet:

 

entweder 

https://www.microsoft.com/en-us/download/details.aspx?id=13255 - Microsoft Access Database Engine 2010 Redistributable oder

https://www.microsoft.com/en-us/download/details.aspx?id=54920 - Microsoft Access Database Engine 2016 Redistributable

downloaden und - anders als beschrieben - die Kommando-Zeile öffnen und WICHTIG: mit dem Runtime-Switch /quiet installieren 

Access...._X64.exe /quiet

dann installiert es dieses Distributable ohne Probleme and man kann danach das 64.bit SSMA 7.6 installieren und problemlos nutzen

Habe es gerade auf meiner Maschine ausprobiert und es funktionierte nebenwirkungsfrei.

Habe jetzt bei mir SSMA 7.6 laufen - und funktioniert.

 

Aus aktuellem Anlass hier einige Infos zum "SQL Server Migration Assistant für Access" (SSMA)

Microsoft hat in seiner unendlichen und  unermesslichen Weisheit beschlossen, den SSMA für Access ab der Version 7.4 nur noch als 64 Bit Version anzubieten.

Meine persönliche Meinung zu diesem überaus sinnigen Entschluss ist weitgehend der Selbstzensur zum Opfer gefallen ...

 Verschlimmert wird dieser Entschluss durch folgende zwei Tatsachen:

  1. Die letzte 32-bit Version des SSMA für Access 7.3 steht bei Microsoft nicht mehr zum Download bereit.
  2. Es scheint überaus schwierig zu sein, einen vernünftigen 64-Treiber zu finden, der - bei einer installierten 32-bit Version von Office - sich vernünfig installieren lässt und mit 32-bit Versionen von Access zusammenarbeirtet.

 Die von mir hier vorgeschlagene Lösung ist:

Die in meinem Onedrive hier im Unterverzeichnis SSMA 1.73 verwendete Version 1.73 zu installieren. Diese ist die letzte Version, die auch als 32-bit Variante ausgeliefert wurde.

Er arbeitet problemlos mit SQL Server 2016 zusammen. Für SQL Server 2017 muss man wohl die neuere - 64-bit only - Variante verwenden und versuchen, diese zum Laufen zu bekommen.

NEU: Eigene Tests haben mir gezeigt, dass die Version 7.3 auch wunderbar mit der neuen SQL Server 2017 Version zurande kommt. (Man muss nur beim ersten Start "SQL Server vNext (Windows) -preview" angeben)

 

Tipps zur Arbeit mit SSMS

Für Access empfiehlt es sich dringend, die Datentypen anzupassen.

Der SQL Server Datetime2 Datentyp wird von manchen Treibern nicht korrekt als Datetime erkannt und sollte daher nicht verwendet werden. Daher ist besonders die Änderung der Zuordnung des Datentyps Date/Time (Access) in den bewährten Datetime wichtig.

Ebenso ist es wichtig, bei der Konvertierung einzustellen, dass für jede Tabelle ein Feld Timestamp erstellt wird.

 

Vor der Konvertierung sich unbedingt die Access Indizes ansehen, die Doppelten (die Access oft automatisch anlegt) löschen sowie sich alle Indizes zu notieren, die

Unique aber mit mehrfach NULL erlaubt sind (Unique Index with NULL), und diese vor der Konvertierung zu löschen.

 

Im SQL Server (ab 2008R2) können Unique Index with NULL einfach wie folgt neu erzeugt werden:

 

/****** Object:  Index [idx_Kunde_Matchcode_notnull]    Script Date: 09.04.2017 22:11:26 ******/

CREATE UNIQUE NONCLUSTERED INDEX [idx_Artikel_Matchcode_notnull] ON [dbo].[tblStamm_Artikel]

(

                [a_Matchcode] ASC

)

WHERE [a_Matchcode] IS NOT NULL;

GO

  

SQL Server Data Tools (SSDT)

 Neben der reinen Konvertierfunktion bietet dieses Tool die Möglichkeit, ein SSDT Projekt zu erzeugen. Ebenso kann auch ein SQL-Script erzeugt werden.

 Info zu SSDT:

 https://msdn.microsoft.com/de-de/library/hh272686(v=vs.103).aspx

https://docs.microsoft.com/de-de/sql/ssdt/download-sql-server-data-tools-ssdt

Wichtig: Gerade auch mit dem SQL Server 2017 ausprobiert: Man kann auch WUNDERBAR SSDT-Scripte oder SQL Scripte von irgendwelchen bereits bestehenden SQL Server Datenbanken (die NICHT mit dem SSMA konvertiert wurden) erzeugen. D.h. für die Arbeit mit SSDT ist der SSMA geradezu eine "Wunderwaffe" <g>

 SSDT für Visual Studio 2015 und SSDT für Visual Studio 2017 verwenden beide DacFx 17.2: Data-Tier Application Framework (DacFx) 17.2 herunterladen

Für den Fall, dass die Daten für VS2015 bei MS nicht mehr verfügbar sein sollten, sind sie im ssma Directory unter sonstiges enthalten.

 Nähere Infos siehe Readme.pdf im Onedrive-Ordner

 

 

------------------ english version -------------------------

 

SQL Server Migration Assistant for Access - 32/64-bit problematic

 

Update:  my workaround is obsolete if you just do the following before installing ssma 64bit:

This   SSMA 7.6 64bit Info Article   describes from MS's point of view what to do to work with the 64-bit tool,

but doesn't mention the Installation-option /quiet

If downloading either

https://www.microsoft.com/en-us/download/details.aspx?id=13255 - Microsoft Access Database Engine 2010 Redistributable or
https://www.microsoft.com/en-us/download/details.aspx?id=54920 - Microsoft Access Database Engine 2016 Redistributable

and - now the part that is not written down - 
open cmd-line and install it with the runtime switch /quiet

Access...._X64.exe /quiet

then it WILL install the distributable without message and without complaint

and you CAN afterwards install and use the 64-bit SSMA 7.6 without problem ....

Just did it on my machine and it works flawlessly .

----------------------  

using of SSMA 7.3 - 32-bit not longer necessarry 

----------------------

Due to recent events here some info on "SQL Server Migration Assistant for Access" (SSMA)

Microsoft has decided in its infinite and immeasurable wisdom to offer the SSMA for Access as of version 7.4 only as a 64 bit version.

My personal opinion on this "very intelligent and thoughtful" decision has largely fallen victim to self-censorship...

  This decision is exacerbated by the following two facts:

  1. The last 32-bit version of the SSMA for Access 7.3 is no longer available for download at Microsoft.
  2. It seems to be extremely difficult to find a reasonable 64 driver that can install and work reasonably well with an installed 32-bit version of Office and with 32-bit versions of Access

The solution I have proposed here is:

Use the SSMA version 1.73, which i put   in my Onedrive   in  subdirectory SSMA 1.73. This is/was the last version, which was also delivered as a 32-bit version.

It works seamlessly with SQL Server 2016.   For SQL Server 2017 you probably need the newer - 64-bit only - use variant and try to get this to work.

NEW: My tests have shown me that version 7.3 is also wonderful working with the new version of SQL Server 2017. (You just have to specify when you first start "SQL Server vNext (Windows) -preview")

 

Tips on working with SSMS

For Access, it is strongly recommended to customize the data types.

The SQL Server datetime2 data type is not correctly recognized as a datetime by some drivers and therefore should not be used. Therefore, especially the change of assignment of data type Date / Time (Access) in the proven ‘old’ datetime is important.

Similarly, it is important to set the conversion to create a timestamp field for each table.

 Before conversion, be sure to view the access indices and record all indexes that are Unique with multiple nulls allowed (unique index with NULL), and delete them before conversion. SSMS does not convert them correctly.

 In SQL Server (2008R2 or later versions) Unique index with zero can easily be re-created as (filtered index) follows:

 

/ ****** Object:   Index [idx_Kunde_Matchcode_notnull]     Script Date: 09.04.2017 22:11:26 ****** /

CREATE UNIQUE NONCLUSTERED INDEX [idx_article_Matchcode_notnull] ON [dbo]. [TblStamm_Article]

(

                [A_Matchcode] ASC

)

WHERE [a_Matchcode] IS NOT NULL;

GO

  

SQL Server Data Tools (SSDT)

Besides pure conversion function, this tool provides the ability to generate an SSDT project. An SQL script can also be generated.

  About SSDT:

  https://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx

https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt

Tried (incl. SQL Server 2017) - Important: You also can create SSDT- scripts or SQL scripts (of any existing SQL Server databases   NOT   converted with the SSMA). This means that the SSMA is a "miracle weapon" <g> for working with SSDT

I personally always create TWO versions of the database, one WITH timestamp-field at the end of each table, and one WITHOUT. The reason: If ssdta is installed, VS offers on right-click of the database a script "create all CRUD-Stored procedures" for the database. I use the script WITHOUT the timestamp (and automatically create the opposite part with vba / dao on the Access side) then i delete the created database without timestamp ...

Both use DacFx 17.2 SSDT for Visual Studio 2015 and SSDT for Visual Studio 2017: Data-Tier Application Framework (DacFx) 2.17.