web-dev-qa-db-ja.com

`Invoke-sqlcmd`を呼び出すときにadalsql.dllエラーをロードできません

[〜#〜] ssdt [〜#〜] とともにVS2015をインストールし、 [〜#〜] ssms [〜#〜] および SqlServer PowerShellモジュール(invoke-sqlcmdコマンドを含む)、まだAzure SQL Data Warehouseに対してクエリを実行しようとすると:

invoke-sqlcmd  -Query "Select top 5 * from customer"  -ConnectionString "Server=tcp:my.database.windows.net,1433;Database=Customer;  Authentication=Active Directory Integrated; Encrypt=True; "

次のエラーが表示されます。

invoke-sqlcmd : Unable to load adalsql.dll (Authentication=ActiveDirectoryIntegrated). Error code: 0x2. For more information, see
http://go.Microsoft.com/fwlink/?LinkID=513072
At line:1 char:1
+ invoke-sqlcmd  -Query "Select top 5 * from vwOffer"  -ConnectionStrin ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Invoke-Sqlcmd], SqlException
    + FullyQualifiedErrorId : SqlExectionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

invoke-sqlcmd :
At line:1 char:1
+ invoke-sqlcmd  -Query "Select top 5 * from vwOffer"  -ConnectionStrin ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Invoke-Sqlcmd], ParserException
    + FullyQualifiedErrorId : ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptComman

adalsql.dll を直接インストールしようとすると、A higher version already existsというメッセージが表示され、dllの両方のバージョンがここにあることがわかります。

 C:\Windows\SysWOW64\adalsql.dll
 C:\Windows\System32\adalsql.dll

それでも、invoke-sqlcmdはそれを見つけることができません。 (A)invoke-sqlcmdがそれを見つけることができるように既存のdllを登録する方法、または(B)再インストールできるようにアンインストールする方法はありますか?

ちなみに、Iamは32ビットSQLCMD.exeでActive Directory Authenticatoinを使用できるため、32ビットdllが正常に機能していることがわかります。正しくロードされていないのは64ビットdllだけです...

22
Jthorpe

それで、この問題も私を悩ませました。どのように発生したのかはわかりませんが、SSMSの最新バージョンをインストールしたときに発生したのは偶然かもしれません。私の修正は:

  1. [プログラムの追加と削除]に移動します

  2. 小さな検索ウィンドウで「sql」と入力するか、「SQL Server用のActive Directory認証ライブラリ」を検索します。

    注:Visual Studio 2019をインストールしている場合、これはWindowsのインストール済みプログラムリストに含まれません。コマンドからMsiExec.exe /I{6BF11ECE-3CE8-4FBA-991A-1F55AA6BE5BF}を呼び出すことで、同じインストーラーを実行できます。プロンプト。

  3. あの小さな男をアンインストールする

  4. ここに移動して、最新のADALライブラリをダウンロードします(x64を選択):
    https://www.Microsoft.com/en-us/download/confirmation.aspx?id=48742

  5. キックのために、再起動

  6. これで、adalsql.dllが適切にロードされます。

35
Bill Sambrone

私の場合、犯人はVS 2019でした。ADALSQLパッケージの新しいバージョンがあります。私にとっては、「C:\ ProgramData\Microsoft\VisualStudio\Packages\sql_adalsql、version = 16.0.61903.25110、chip = x64、language = en-US」というパスにあり、問題を解決するために必要なバージョンをアンインストールしてインストールしました。

お役に立てれば!

2
kiran

私の場合、追加/削除プログラムには、「Active Directory Authentication Library」のインストール済みインスタンスは表示されませんでした。それでも、 library をインストールしようとすると、新しいバージョンがインストールされたと言って失敗します。

レジストリエディタ(regedt32)を開き、次の検索機能を使用して、自分自身を解放しました。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer

adalsqlを探しています。

キーを含むことでヒットしました

DisplayName: Active Directory Authentication Library for SQL Server
DisplayVersion: 15.0.1300.359

重要なのは、関連するインストーラーへのパスです。私にとってはc:\windows\installer\4c334521.msi。私はそのmsiを実行し、最終的に「アンインストール」できました。その後、上記の「ライブラリ」リンクからインストーラを実行すると、ようやく機能しました。

1
Tommy