web-dev-qa-db-ja.com

実稼働ASP.netサイトにファイルまたはアセンブリMicrosoft.SqlServer.SqlClrProviderをロードできませんでした。

ASP.netサイトには、Microsoft.SQLserver.SMOへの参照があります。この参照を実稼働サーバーにコピーし、Microsoft.SqlServer.Management.Sdk.Sfcのロードできませんでしたエラーが発生しました。このエラーは、dllを

C:\Program files\Microsoft Sql Server\110\SDK\Assembilies

しかし、その後、同じエラーが発生しましたが、Microsoft.SqlServer.SqlClrProviderは見つかりません。

SqlClrProvider dllはどこにありますか?それは私のローカルホストで動作するので、どこかになければなりません。

21
user2945722

開発マシンまたはSQL Serverがインストールされているマシンでは、Microsoft.SqlServer.SqlClrProvider.dllファイルはGACにあります。ただし、レジストリを変更せずにこのファイルをコピーすることはできません。

レジストリエディターを使用して、HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Fusionに移動します。 DWORDという新しいDisableCacheViewerを追加します。 1の値を指定します。

この変更を行ったら、C:\Windows\Assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\にアクセスして必要なdllを取得できます。

詳細な説明を参照するには、次のリンクのいずれかに従ってください。

20
Daniel

SqlClrProvider dllをsqlserver Binnディレクトリにコピーdid n't私の場合は助けてください。

原因:

これは、実稼働マシンとターゲットマシンでSQLServerの異なるバージョンを使用したことが原因でした。

解決策:

ターゲットマシンにあるものと同じバージョンのSMOライブラリを使用していることを確認してください。ターゲットマシンにSQLServer2008がある場合、v10ライブラリを使用する必要があります。そうしないと、このエラーが発生します。

詳細:

ターゲットマシンのSqlServerはバージョン2008(10)で、自分のマシンにはSqlServer2014(12)がありました。 SMOライブラリを使用したとき、visualstudioはv12ライブラリを追加しました(Microsoft.SqlServer.SMO、...)が、smoはSqlClrProviderを使用する単なるシェルであり、システムアセンブリに同じバージョンのSqlClrProviderが存在することを想定しています。これにより、SqlClrProviderのv12が存在しなかったため、ターゲットマシンでアプリケーションがクラッシュしました。 v10 smoライブラリを使用して、問題を解決しました

4

PowerShellで埋め込みスクリプトを作成し、同じ問題に出くわしたかったのです。

問題は、Microsoft.SqlServer.SqlClrProvider.dllはSQLファイルではなく、ウィンドウAssemblyにインストールされます。

Assemblyフォルダーは特別です。WindowsUIでは何もコピーできません。

必要なのはMicrosoft.SqlServer.SqlClrProvider.dllそのように私のスクリプトでそれをロードできるように:

[System.Reflection.Assembly]::LoadFile($scriptPath+"dll\Microsoft.SqlServer.SqlClrProvider.dll") | out-null

コピーするには、次を実行できます。

c:\>cd c:\Windows\Assembly
c:\Windows\Assembly>dir /s Microsoft.SqlServer.SqlClrProvider.dll
# here you get the directory and the file
c:\Windows\Assembly>copy c:\Windows\Assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\<version>\Microsoft.SqlServer.SqlClrProvider.dll c:\Users\Administrator\Desktop\

sQLserverがインストールされているマシンでそれを行うと、見つからない場合があります。

これは単なる回避策です。異なる環境でスクリプトを実行する必要がある場合、それは最善のことではないと思います。

hth

4
Boop

バージョン11でも同じ問題がありました。適切なアセンブリをインストールするには、次の手順を実行しました。

enter image description here

4
Joel Harkes

最初に行う必要があるのは、GAC Shell拡張機能を無効にして、GACを参照できるようにすることです。

  • 「regedit」を開きます
  • HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Fusionに移動します
  • 16進値が0x1または10進値が1のDisableCacheViewerという名前の新しいDWORDまたは32ビットDWORDを追加します。

これによりGACシェルが無効になり、Assemblyフォルダーを完全に閲覧できるようになりました。GACからAssemblyを抽出し、クライアントマシンのbinフォルダーまたはdllの場所にドロップできます。

  • C:\ Windows\Assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider \に移動します
  • ここにフォルダ以上のものがあることに気付くかもしれません、これはインストールしたSQLサーバーの各バージョン用です
  • SQL 2012の場合:\ 11.0.0.0__89845dcd8080cc91
  • その後、ファイルMicrosoft.SqlServer.SqlClrProvider.dllが見つかります。

参照

2
Naresh Goradara

Microsoft.Sqlerver.SMO参照を使用している間、問題を解決できませんでした。したがって、代わりにSystem.Data.Sql.SqlDataSourceEnumeratorクラスを使用して、すべてのSql機能のニーズに対応しました。

2
user2945722

このエラーをグーグルで探してここに到着した人には、別の可能性があります。 [サービス]に移動し、SQL Serverプロセスが実行できることを確認します。私のマシンでは、ユーザーアカウントのパスワードが変更されていました。パスワードを修正すると、プロセスが開始され、上記のエラーは表示されなくなりました。

1
Nate