3

SQL Server の C# CLR トリガーから WCF を使用する古いプロジェクトがあります。私はいつもスクリプトを実行してインストールしていました。

しかし、VS 2012 の SSDT プロジェクトに移ることにしました。空のデータベースからプロジェクトをインポートしました。WCF の機能は、.net フレームワークのいくつかのアセンブリに依存しています

SMdiagnostics
System.Web
System.Messaging
system.identitymodel
system.identitymodel.selectors
microsoft.transactions.bridge
System.ServiceModel

したがって、プロジェクトでこれらのdllへの参照があります。また、Assemblies サブフォルダーの下のプロジェクトに追加しました。

ただし、展開スクリプトを作成すると、これらのアセンブリは含まれません。

そのため、スクリプトをデータベースに発行しようとすると、エラーが発生します。

アセンブリ 'system.servicemodel、バージョン = 3.0.0.0、カルチャ = ニュートラル、publickeytoken = b77a5c561934e089。' が SQL カタログに見つかりませんでした。

アセンブリを db に追加するカスタム スクリプトを作成しようとすると、次のようになります。

create assembly [SMdiagnostics]
from  'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMdiagnostics.dll'
with permission_set = unsafe
go

エラーが表示されます

エラー: SQL70502: アセンブリ ソースが無効です。バイナリ リテラルのみが許可されます。

SSDT プロジェクトと共に展開するアセンブリを .NET から追加するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

14

.NET アセンブリを SSDT プロジェクトに追加するには:

  1. ソリューション エクスプローラーで、プロジェクトを展開し、[参照] を右クリックします。
  2. [参照の追加] ウィンドウで、アセンブリを参照するか、[アセンブリ] カテゴリから選択します。
  3. 追加したアセンブリを右クリックし、[プロパティ] をクリックします。
  4. 次のプロパティが設定されていることを確認します。
    • SQL スクリプトの生成: True
    • モデル対応: True
    • アクセス許可セット: 安全/外部/安全でない (アセンブリによる)
  5. F5 キーを押して LocalDB/Debug 宛先にデプロイするか、[Publish and Generate Script] を選択して変更を確認します。

DACPAC (SSDT ビルドの結果) では、DLL が含まれておらず、別のホストでパスを保証できないため、パスを使用して CREATE ASSEMBLY を実行できません。したがって、DACPAC では埋め込みバイナリ リテラルのみが許可されます。

于 2013-11-15T20:01:29.260 に答える