web-dev-qa-db-ja.com

SQL Server Management Studio-接続できません-メソッドが見つかりませんSqlConnectionInfo.set_IsActiveDirectoryUniversalAuth

Microsoft Visual Studio 2015がインストールされたWindows 10の新規インストールがあります(したがって、デフォルトデータベースもインストールされました)。 SQL Server Management Studio 2016(v13.0.16106.4)をインストールしましたが、次のエラーメッセージで接続できませんでした。

MYSERVER\SQLEXPRESSに接続できません。

メソッドが見つかりません: 'Void Microsoft.SqlServer.Management.Common.SqlConnectionInfo.set_IsActiveDirectoryUniversalAuth(Boolean)'。 (ConnectionDlg)

私はそれ以来、以下を試みました:

  • SQL Server 2016をインストールする
  • SQL Server 2016とVisual Studio 2015に付属するものの両方をアンインストールします(以下 http://intellitect.com/sql-server-2008-install-nightmare/ に従います)
  • すべてをクリーンアップして再起動した後、SQL Server 2016をデフォルト設定でインストールします
  • Microsoft SQL Server Management Studioを修復する

接続しようとしているもの(サーバーテキストボックスにジャンクを入力することを含む)に関係なく、同じメッセージが表示されることに注意してください。これは、SSMSが実際にサーバーに接続しようとする前にエラーが発生したことを示しています。

アイデアが足りません。 DLLファイルが欠落している可能性がありますが、どのファイルと理由か、私には言えません。

私が見つけた唯一の「有用な」参照はこれです technet forum post これは「パッチ」を参照しますが、この「パッチ」が存在する場合、どこにあるかを見つけることができません。

4

この回答は一部の操作を許可しますが、環境が壊れていることに注意してください。

重要:これにより、データベースに接続してクエリを実行できますが、SSMS内でエラーが発生します!

きれいだと言っているわけではありませんが、SQL Server Express 2016を使用できるようになりました。

フォルダからファイル_Microsoft.SqlServer.ConnectionInfo.dll_をコピーします。

_C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio
_

このフォルダーに(最初にファイルをバックアップしてから、ファイルを上書きすることを強くお勧めします):

_C:\Windows\Assembly\GAC_MSIL\Microsoft.SqlServer.ConnectionInfo\13.0.0.0__89845dcd8080cc91
_

なぜ機能するのですか?

マイクロソフトのエンジニアがこの質問に答える方が良いことに注意してください。ただし、これが私の理論です。何らかの理由で、同じバージョンの_Microsoft.SqlServer.ConnectionInfo_アセンブリの異なるリリースが公にリリースされました(たとえば、一部として) Visual StudioおよびSQL Server Expressのリリース)。 GACの1つには_SqlConnectionInfo.IsActiveDirectoryUniversalAuth_プロパティが含まれていませんでしたが、SQL Server Management Studio Expressはそれを予期しています。

ここでは、GACのバージョンをSSMS Expressに同梱されているバージョンに置き換えるだけで、代わりにこのバージョンをロードしています。このwillは、そのdllファイルに依存するすべてに影響しますが、同じバージョン番号のアセンブリに重大な変更がないことを願っています...

どうやってこれを見つけたのですか?

Intertubesを検索して、クラスが指定されているdllファイルを見つけました。次に、sysinternalのprocmonを使用して、実際に読み込まれたdllのバージョンを調べました。そのファイルの他の潜在的なバージョンをコンピューターで検索し、別のエラーが発生するまでバージョンを無効にしてみました。次に、SSMS Expressのインストールフォルダーにある他のバージョンに置き換えてみましたが、うまくいきました。だからここにいる!

更新

ただし、すべてを解決しているわけではありません...データベースを右クリックしてプロパティを選択すると、エラーが発生します。

_Cannot show requested dialog. (SqlMgmt)
Method not found: 'Microsoft.SqlServer.Management.Common.DatabaseEngineEdition Microsoft.SqlServer.Management.Smo.SqlSmoObject.get_DatabaseEngineEdition()'. (SqlManagerUI)`
_

私は成功せずにすべてをGACにインストールしようとしました:ls "C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\*.d ll" | % { &"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe" /if $_.FullName }

2

SQLServer 2016でも、あなたと同じエラーが発生しました。
SQL Server 2017以降、SMOはNugetパッケージとして配布されます。

SQL Server 2017以降、SMOはMicrosoft.SqlServer.SqlManagementObjects NuGetパッケージとして配布され、ユーザーがSMOでアプリケーションを開発できるようにします。

Msdnページのリンクを参照してください: SMOのインストール

SQL Server 2016を使用していても、以前のようにDllを参照する代わりに、nugetパッケージをインストールする必要があるようです。

これは2016 SQLインストールで発生し、Microsoft Office Managerの最新のインストールを実行して、インストール後にデータベースにアクセスしました。

インストール後にサーバーを再起動するだけで問題が解決します。 (SSMSパッケージを最初にインストールするときにそうしなかった場合)。

再起動すると、すべて正常でした。

enter image description here

0
Andrew