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はどこにありますか?それは私のローカルホストで動作するので、どこかになければなりません。
開発マシンまたは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を取得できます。
詳細な説明を参照するには、次のリンクのいずれかに従ってください。
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ライブラリを使用して、問題を解決しました
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
バージョン11でも同じ問題がありました。適切なアセンブリをインストールするには、次の手順を実行しました。
最初に行う必要があるのは、GAC Shell拡張機能を無効にして、GACを参照できるようにすることです。
これによりGACシェルが無効になり、Assemblyフォルダーを完全に閲覧できるようになりました。GACからAssemblyを抽出し、クライアントマシンのbinフォルダーまたはdllの場所にドロップできます。
Microsoft.Sqlerver.SMO
参照を使用している間、問題を解決できませんでした。したがって、代わりにSystem.Data.Sql.SqlDataSourceEnumerator
クラスを使用して、すべてのSql機能のニーズに対応しました。
このエラーをグーグルで探してここに到着した人には、別の可能性があります。 [サービス]に移動し、SQL Serverプロセスが実行できることを確認します。私のマシンでは、ユーザーアカウントのパスワードが変更されていました。パスワードを修正すると、プロセスが開始され、上記のエラーは表示されなくなりました。