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)
私はそれ以来、以下を試みました:
接続しようとしているもの(サーバーテキストボックスにジャンクを入力することを含む)に関係なく、同じメッセージが表示されることに注意してください。これは、SSMSが実際にサーバーに接続しようとする前にエラーが発生したことを示しています。
アイデアが足りません。 DLLファイルが欠落している可能性がありますが、どのファイルと理由か、私には言えません。
私が見つけた唯一の「有用な」参照はこれです technet forum post これは「パッチ」を参照しますが、この「パッチ」が存在する場合、どこにあるかを見つけることができません。
この回答は一部の操作を許可しますが、環境が壊れていることに注意してください。
きれいだと言っているわけではありませんが、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 }
SQLServer 2016でも、あなたと同じエラーが発生しました。
SQL Server 2017以降、SMOはNugetパッケージとして配布されます。
SQL Server 2017以降、SMOはMicrosoft.SqlServer.SqlManagementObjects NuGetパッケージとして配布され、ユーザーがSMOでアプリケーションを開発できるようにします。
Msdnページのリンクを参照してください: SMOのインストール
SQL Server 2016を使用していても、以前のようにDllを参照する代わりに、nugetパッケージをインストールする必要があるようです。