web-dev-qa-db-ja.com

SSMA for Access-移行アシスタントWizardリンクテーブルで失敗する

Sql Server Migration Assistant for Accessを移行ウィザードと共に使用すると、リンクテーブルの手順にたどり着くまで、Access(2016)データベースからSQL Server Express(2017)への変換はすべてうまくいきます。 SQL Server接続ダイアログが表示されます。

sql server connection dialogue

テーブルの作成に使用したのと同じ資格情報を入力します。私の理解では、このダイアログではAccessで別のSQLサーバーログインを使用できるように見えるため、ここでは通常のことは何もないでしょう。しかし、それから私は次のエラーを受け取ります:

error

Connection failed:
SQLState: '01000'
SQL Server Error: 772
[Microsoft][ODBC SQL Server Driver]
[DBNETLIB]ConnectionOpen (SECDoClientHandshake()).
Connection failed:
SQLState: '08001'
SQL Server Error: 18
[Microsoft][ODBC SQL Server Driver]
[DBNETLIB]SSL Security error

同じエラーで接続を暗号化して、または暗号化せずに試しましたので、SSLエラーのようには見えません。

4つのSQL Server ODBCドライバがインストールされています:

  • SQL Server用ODBCドライバー11
  • SQL Server用ODBCドライバー13
  • SQLサーバー
  • SQL Server Native Client 11.0

ODBC Data Source Administratorを使用して接続を作成すると、SQL Serverドライバーを使用して同じエラーが発生する可能性があります。他の3つは問題なく動作します。したがって、SSMAはSQL Serverの代わりにSQL Server Native Clientドライバ(4つのうち最も古いもの)を使用しているようです。これはSSMAの依存関係であると考えられます。

4
Chris Purves

私は次のようにして問題を回避することができました。

  1. 移行アシスタントの完了を許可する(リンク変換されたテーブルが失敗する)
  2. MySQLリンクテーブルを手動でAccessに追加します
    1. Accessを開き、External Data->New Data Source->From Other Sources->ODBC Databaseを選択します
    2. Link to the data source by creating a linked tableを選択します
    3. ODBCドライバファイルまたはソースを選択します
    4. 資格情報を入力してください
    5. リンクするテーブルを選択してください
  3. Accessテーブルを削除し、MySQLテーブルの名前を変更します
    1. テーブルリストから、最初のAccessテーブルを右クリックして削除
    2. 対応するMySQLテーブルを右クリックし、削除されたAccessテーブルと完全に一致するように名前を変更します
    3. 再マッピングするすべてのテーブルについて繰り返します

削除したAccessテーブルと一致するように各MySQLテーブルの名前を変更すると、すべてのクエリが機能するはずです。

2
Chris Purves