2017-02-20 7 views
0

私が書いたライブラリを含む外部の.dllファイルにリンクするCLRトリガーを展開しようとしています。今はローカルデータベースのコードをテストできるようにしたいだけです。ローカルデータベースをTrustworthy = Trueに設定し、外部アセンブリのアクセス権を自分のユーザー名に設定しました。すべてのヘルプははるかにapreciatedされるだろうCLRトリガー展開エラー

Severity Code Description Project File Line Suppression State 
Error  SQL72014: .Net SqlClient Data Provider: Msg 6503, Level 16, 
State 12, Line 1 Assembly 'googlecalendersync, version=1.0.0.0, 
culture=neutral, publickeytoken=fab9d21c96557bef.' was not found in the SQL 
catalog. Test3 C:\Users\dwd002\Documents\Visual Studio 
2015\Projects\Test3\Test3\bin\Debug\Test3.sql 52 

私はまた私が使用しようとしています外部ライブラリへの参照を追加しましたが、私は関数を呼び出すとき、私はこのエラーを取得します。私が今やっているやり方では安全ではないことを今すぐ知っています。今はコンセプトの証です。ライブラリ.dllを作成するときに間違っていることがありますか?

+0

「アセンブリ作成」ステートメントを使用してそのアセンブリをデータベースに追加できますか? –

+0

それは唯一の解決策であることが判明しましたが、プロジェクトが12個程度の外部DLLで構成されているため、それらを追加することは苦労し、ネットワーク管理者はデータベースを変更して安全でないコードに変更したくありません。そのため、回避策は、私がC#プロジェクトで実行したいコードをすべて作成し、それを.exeにコンパイルし、その.exeをトリガーから実行することでした。 C#プロジェクトは、外部的にデータベースに接続するだけです。 –

答えて

2

私はまず、あなたのサードパーティのDLLから

use master 
GO 
CREATE ASYMMETRIC KEY ClrGoogleCalender 
FROM EXECUTABLE FILE='<Your 3rd party dll path>' 
CREATE LOGIN CLRGoogleCalenderLOGIN FROM ASYMMETRIC KEY ClrGoogleCalender 
GRANT UNSAFE ASSEMBLY TO ClrGoogleCalenderLOGIN 
GO 

をアセンブリを作成し、あなたのサードパーティがSQL Serverのカタログ

にdllをUplaod必要がある、あなたのCLRプロジェクトに

をサードパーティのDLLを使用していると思います