Reporting Services でカスタム アセンブリまたは埋め込みコードを使用する方法


SQL Server のサポート音声列


Reporting Services でカスタム アセンブリまたは埋め込みコードを使用する方法

お客様のニーズには、この列をカスタマイズするには、サポート技術情報とサポート音声列にして表示する問題に関心のあるトピックに関するアイデアが将来的にアドレスを送信することを招待します。アイデアとそれの要求フォームを使用してフィードバックを送信できます。この列の下部にあるフォームへのリンクもあります。
再びようこそ!砂の Yakob の私は、Microsoft SQL Server コンテンツ チームとします。SQL Server サポート音声列に対して、できなかったと思います。気に me: 14 年間マイクロソフトとしました。過去 3 年間、私は SQL Server のコンテンツのチームに取り組んできました。


今月のコラムでの John Sirmon は、カスタム アセンブリまたは SQL Server 2000 レポート サービスと SQL Server 2005 レポート サービス内の埋め込みコードを使用する手順。 この資料は、Reporting Services でカスタム アセンブリで実行してを開始する基本的な手順を提供するよう設計されています。 ジョンは、マイクロソフトでは SQL 開発者のサポート チームのサポート エスカレーション エンジニアし、2001 年 3 月以降マイクロソフトに対して効果があった。彼の動作している SQL Server の 10 年以上にわたり、Microsoft Visual Studio で発生する広範囲の開発です。 ジョンは、経営管理の要塞で B. S. 度を保持します。彼はまた、マイクロソフト認定ソリューション開発者 (MCSD) 証明し、マイクロソフト認定データベース アドミニストレーター (MCDBA) 証明書を保持します。列を利用して方が便利なことを願っています。

カスタム アセンブリを作成します。

カスタム アセンブリを作成するには、次の手順を実行します。
  1. Visual Studio のクラス ライブラリを作成します。 [ファイル] メニューで、新規をポイントし、プロジェクト] をポイントし、[クラス ライブラリ] をクリックします。
  2. 名前と場所を指定します。 たとえば、SimpleClassLibrary および C:\Documents and Settings\user1\My Documents\Visual Studio の 2005\projects を使用しました。
  3. (ここで、Class1.vb)、クラス ファイルを開き、Reporting Services で使用する関数を作成します。 私の場合だけで簡単な 1 つの共有関数を作成します。

    注: これは、共有関数 (C# では静的な) であるため、オブジェクトのインスタンスを使用してアクセスすることはありません。 後でアセンブリを参照する方法に影響を与えますあるは、この点に留意してください。
    Public Class Class1

    Public Shared Function DoSomething() As String
    Return "string data returned from custom assembly"
    End Function

    End Class
  4. すべてのコードの追加が完了したら後、は、[ビルド] メニュービルド SimpleClassLibraryをクリックします。 この手順は、それぞれの bin フォルダーにアセンブリまたはマネージ .dll を作成します。 私の例では、この手順は、アセンブリ、マイ Documents\Visual Studio 2005\Projects\ SimpleClassLibrary\bin\Debug フォルダー内の SimpleClassLibrary.dll を作成しました。

SQL Reporting Services フォルダーにカスタム アセンブリをコピーします。

アセンブリをレポート デザイナーとレポート サービスのレポート サーバーを使用できるようにします。 これを行うには、レポート デザイナーのフォルダーに、レポート サーバーのフォルダーに、.dll をコピーする必要があります。

注: パスは、インストール パスによっては若干異なる可能性があります。
  • レポート サービス 2005 では、次のフォルダーに .dll ファイルをコピーします。
    • プログラムを Visual Studio の 8\Common7\IDE\PrivateAssemblies
    • プログラムを指定して SQL の Server\MSSQL.3\Reporting ください。
  • レポート サービス 2000 では、次のフォルダーに .dll ファイルをコピーします。
    • プログラムを指定して SQL Server\80\Tools\Report のデザイナー
    • プログラムを指定して SQL ください。
注: コードを変更するたびにこれを実行する必要があるが、少し時間がかかる、ことがあります。 多くの開発者は、このタスクを処理するバッチ ファイルを作成します。 ここでは、サンプル バッチ ファイルを使用することができます。
@ECHO OFF
REM Name: SRSDeploy.bat
REM
REM This batch files copies my custom assembly to my Reporting Services folders.
REM Run this from the directory where the customer assembly was compiled.
REM Be sure to close any applications that have your custom assembly open.
REM
REM This is the SQL Server 2005 version:
copy SimpleClassLibrary.dll "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"
copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin"
REM This is the SQL Server 2000 version:
REM copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\80\Tools\Report Designer"
REM copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin"
通常プロジェクトでカスタム ビルド後のイベントを作成することでこのタスクを処理します。 これを行うには、プロジェクトのプロパティに移動します。 次に、 [コンパイル] タブをクリックし、[ビルド イベント] をクリックします。[ビルド イベント] ダイアログ ボックスが開きます。 ビルド後に実行するコマンドラインを、選択し、し、次のように入力します。
"8\Common7\IDE\PrivateAssemblies\「$(TargetPath)」"C:\Program ファイルの Visual Studio のコピーします。
「$(TargetPath)」"C:\Program を指定して SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\"をコピーします。
アセンブリの場所を指定するのにビルド後のマクロを使用します。 ビルド後のイベントを作成する方法の詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。

Reporting Services でカスタム アセンブリへの参照を追加します。

カスタム アセンブリへの参照を追加するには、レポート デザイナーでレポート サービス レポートを開きます。これを行うには、以下の手順を実行します。
  1. カスタム アセンブリを参照するレポートを開きます。
  2. [レポート] メニューの[レポートのプロパティをクリックします。
  3. レポートのプロパティ] ダイアログ ボックスで、[参照設定] タブをクリックします。
  4. 参照では、[アセンブリ名] 列のヘッダーの横にある省略符号ボタン (...) ボタンをクリックします。



    注: クラスのセクションでは、インスタンス ベースのメンバーに対してのみです。静的メンバーではありません。(もと呼ばれるに「共有」では、Reporting Services のドキュメントの一部) の静的メンバーがクラスのすべてのインスタンスに使用可能なすべてのインスタンスが同じストレージの場所を使用しているを意味します。共有キーワードでは、Microsoft Visual Basic と C# の静的キーワードを使用して静的メンバーが宣言されています。 少し混乱を招くことができます。 つまり、カスタム アセンブリのインスタンス メンバーにアクセスする必要がある場合は、クラスの「クラス名とインスタンス名を指定する必要がします。 レポート サービスから呼び出すことには、メソッドが定義されているため静的として Visual Basic の shared キーワードを使用して、クラスのセクションではなく、[参照] セクションを使用します。
  5. [参照の追加] ダイアログ ボックスで [参照] をクリックします。(SQL Server 2005 は、 [参照] タブをクリックします)。
  6. 見つけてカスタム アセンブリをクリックします。[開く] をクリックします。(SQL Server 2005 では、開いているのではなく、追加をクリックします)。
  7. [参照の追加] ダイアログ ボックスで [ OKを] をクリックします。
  8. レポートのプロパティ] ダイアログ ボックスで [ OKを] をクリックします。
Reporting Services でカスタム アセンブリを使用する準備が整いました。
  1. レポート デザイナーでレポート (.rdl ファイル) を開きます。
  2. Reporting Services でカスタム アセンブリを使用する方法を示すためには、テキスト ボックスを追加します。これを行うには、空白のテキスト ボックスをツールボックスからレポートにドラッグします。
  3. テキスト ボックスのプロパティの] プロパティをクリックし、次の構文を使用して関数を呼び出します。
    =ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
    私の例では、表示されて、次の。
    =SimpleClassLibrary.Class1.DoSomething()
    レポート サービス内のコードを参照するのには、他の形式が使用されます。 たとえば、埋め込みコードを呼び出す場合は、次の形式を使用します。
    =Code.MethodName()
    インスタンスを使用してカスタム アセンブリ内から、静的でない、または、インスタンス ベース メソッドを呼び出す場合は、次の形式を使用します。
    =Code.InstanceName.Method
    注: 設定する、参照とは異なる、インスタンス ベースのメソッドを使用する場合。 これを行うは必要があるレポートのプロパティ] に移動するのには、[参照] タブをクリックしてクラスの「クラス名とインスタンス名を指定します。

カスタム アセンブリには、追加のアクセス許可が必要な場合、コード アクセス セキュリティ

カスタム アセンブリは、実行レベルの既定のアクセス許可よりも多くのアクセス許可を必要とする場合は、いくつかのコード アクセス セキュリティの変更を行う必要があります。 コード アクセス セキュリティとアクセス許可の問題が発生した場合、期待される結果の代わりにカスタム アセンブリからほとんどの場合"#Error"が表示されます。この問題が発生しているかどうかを決定するときに実行されるいくつかのクイック操作と、カスタム アセンブリに追加のアクセス許可を付与する方法の詳細については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします。ベース:
842419 Reporting Services のレポートで参照されているカスタム アセンブリにアクセス許可を与える方法

注: 次の方法は、コード アクセス セキュリティの問題が発生している場合を判断するためのテストです。カスタム アセンブリに完全信頼のアクセス許可を付与するので、次の方法を使用することはお勧めしません。



、カスタム アセンブリを新しいコード グループを作成し、完全信頼のアクセス許可を付与します。これを行うには、プログラムを指定して SQL の Server\MSSQL.3\Reporting Services\ReportServer\rssrvpolicy.config ファイルを開くし、次のコードを追加します。
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\pathtocustomassembly\customassembly.dll"
/>
</CodeGroup>
具体的なアクセス許可セット、コード グループにこのアクセス許可を割り当てる代わりにセットを作成することをお勧めします。 この記事取得することを目的とし、カスタム アセンブリは、実行中より詳細な情報が必要です。

注: カスタム アセンブリは多くの場合、レポート デザイナーで正しく動作します。ただし、展開、レポート サーバーでカスタム アセンブリを実行しようと、デフォルトの実行レベルのアクセス許可はないこと十分ながあります。 この理由は、既定で、レポート デザイナーは、"FullTrust"のアクセス許可を持つカスタム アセンブリを実行します。 ただし、レポート サーバーにレポートを配置するとき、レポート サーバーで許可されている既定のアクセス許可は、実行レベルに設定されます。 この問題が発生した場合ほとんどの場合、カスタム アセンブリから期待どおりの結果ではなく、レポートのコントロールに"#Error"が表示されます。

埋め込みコード

埋め込みコードは、レポートのプロパティ] ダイアログ ボックスの [コード] セクションで記述されているコードです。 埋め込みコードは、レポート内で何回かに呼び出されるコードの適切な選択です。 複数のレポート内のコードを再利用するには、カスタム アセンブリが可能性があることをお勧めします。 埋め込み関数を作成するには、次の手順を実行します。
  1. [レポート] メニューの[レポートのプロパティをクリックします。
  2. レポートのプロパティ] ダイアログ ボックスで、[コード] タブをクリックします。
  3. 次の関数を追加し、し、[ OK] をクリックします。
    Public Function EmbeddedFunction() as String
    Return "this is from embedded code function"
    End Function
  4. レポートでは、新しいテキスト ボックスを追加します。
  5. 次のValueプロパティに追加します。
    =code.EmbeddedFunction
この資料に記載されて彼の努力のジョンに感謝したいと思います。 SQL Server と Microsoft の開発言語のいくつかの詳細な経験があり、お客様と連携し、困難な問題の解決を楽しんでいます。今月のトピックを楽しんでいただけた。ありがとうござます。、常に自由にアイデアを将来の列に対応するトピックまたはそれの要求フォームを使用してサポート技術情報を送信します。