Verwendung von benutzerdefinierten Assemblys oder eingebettetem Code in Reporting Services

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 920769 - Produkte anzeigen, auf die sich dieser Artikel bezieht
SQL Server Support Voice-Spalte

Verwendung von benutzerdefinierten Assemblys oder eingebettetem Code in Reporting Services

diese Kolumne an Ihre Bedürfnisse anpassen wir möchten Sie Ihre Ideen zu den Themen zu senden, die Sie interessieren einladen möchten, und behandelt Probleme, die Sie anzeigen möchten, in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen. Sie können Ihre Ideen und ihr Feedback über das Formular Ask For It senden. Es gibt auch eine Verknüpfung zu dem Formular am unteren Rand dieser Spalte.
Alles erweitern | Alles schließen

Auf dieser Seite

Herzlich Willkommen! Ich bin Sandy Yakob, mit dem Microsoft SQL Server Content-Team. Ich bin Gastgeberin für die SQL Server Support Voice-Spalten. Eine kurze Notiz über mich: Ich haben seit bei Microsoft 14 Jahren. Für die letzten drei Jahre haben ich mit dem Inhalt von SQL Server-Team gearbeitet.

Für dieses Monats wird John Sirmon Sie die Schritte zur einer benutzerdefinierten Assembly oder eingebetteten Code in SQL Server 2000 Reporting Services und SQL Server 2005 Reporting Services geben. Dieser Artikel soll Sie die grundlegenden Schritte zum Sie und mit einer benutzerdefinierten Assembly in Reporting Services zuweisen. John ist Support Escalation Engineer im SQL Developer Support-Team bei Microsoft und arbeitete für Microsoft seit März 2001. Er arbeitete mit SQL Server über 10 Jahren und hat umfassende Entwicklung mit Microsoft Visual Studio auftreten. John enthält einen Grad b s in Business Administration aus der Citadel. Er enthält auch eine Zertifizierung für Microsoft Certified Solution Developer (MCSD) und eine Zertifizierung für Microsoft Certified Database Administrator (MCDBA). Ich hoffe, dass Sie genießen Sie die Spalte, und es hilfreich.

Erstellen einer benutzerdefinierten assembly

Gehen Sie folgendermaßen vor um eine benutzerdefinierte Assembly zu erstellen:
  1. Erstellen Sie eine Visual Studio-Klasse Bibliothek. Im Menü Datei auf neu , zeigen Sie auf Projekt , und klicken Sie dann auf Klassenbibliothek .
  2. Geben Sie den Namen und den Speicherort. Beispielsweise verwendet ich SimpleClassLibrary und c:\Dokumente und Settings\user1\My Dateien\Visual Studio 2005\projects.
  3. Öffnen Sie die Class-Datei (in meinem Fall Class1.vb), und erstellen Sie dann die Funktionen, die Sie in Reporting Services verwenden möchten. In meinem Fall erstellt nur eine einfache freigegebene Funktion.

    Hinweis: Da dies eine freigegebene Funktion (static in c#) ist, müssen wir es mithilfe eines instanziierten Objekts zugreifen. Dass Bedenken Sie dies hat Auswirkungen auf wie wir unsere Assembly später in diesem Artikel verweisen.
    Public Class Class1
    
        Public Shared Function DoSomething() As String
            Return "string data returned from custom assembly"
        End Function
    
    End Class
    
  4. Nachdem Sie das Hinzufügen des Codes abgeschlossen haben, klicken Sie im Build auf Build SimpleClassLibrary . Dieses Schritt erstellt die Assembly oder verwaltete DLL an den entsprechenden Bin-Ordner. In meinem Beispiel erstellt dieses Schritt der Assembly SimpleClassLibrary.dll in den Ordner Eigene Dateien\Visual Studio 2005\Projects\ SimpleClassLibrary\bin\Debug.

Kopieren Sie die benutzerdefinierte Assembly in die SQL Reporting Services-Ordner

Stellen Sie Ihre Assembly in Reporting Services-Berichtsserver zu Report Designer zur Verfügung. Zu diesem Zweck müssen Sie die DLL-Datei in den Ordner Berichts-Designer und auf den Berichtsserver-Ordner kopieren.

Hinweis: Der Pfad möglicherweise etwas anders, abhängig von Ihrem Installationspfad.
  • Kopieren Sie die DLL für Reporting Services 2005 in den folgenden Ordnern:
    • Programm Visual Studio 8\Common7\IDE\PrivateAssemblies
    • C:\Programme\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin Programm
  • Kopieren Sie die DLL für Reporting Services 2000 in den folgenden Ordnern:
    • Programm c:\Programme\Microsoft SQL Server\80\Tools\Report Designer
    • C:\Programme\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin Programm
Hinweis: Da Sie dazu diese jedes Mal, die Sie den Code ändern, kann es etwas mühsam sein. Viele Entwickler erstellen Batchdateien, um diese Aufgabe zu behandeln. Hier ist eine Beispiel-Batchdatei können Sie use.
@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"
ich behandeln diese Aufgabe normalerweise, indem Sie benutzerdefinierte Postbuildereignis in meinem Projekt erstellen. Dazu gehen Sie zu den Eigenschaften des Projekts. Anschließend klicken Sie auf die Registerkarte Kompilieren , und klicken Sie dann auf Buildereignisse . Dies Öffnet das Dialogfeld Buildereignisse . Wählen Sie die Befehlszeile für Postbuildereignis , und geben Sie die folgenden:
Kopie "$(TargetPath)"""c:\Programme\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\"
Kopieren von "$(TargetPath)""" Ordner c:\Programme\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\ "
Dies wird ein Postbuildereignis Makro verwendet, um den Speicherort der eigene Assembly anzugeben. Weitere Informationen zum Erstellen von Postbuildereignisse der folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn2.microsoft.com/en-us/library/42x5kfw4.aspx

Hinzufügen eines Verweises auf die benutzerdefinierte Assembly in Reporting Services

Um einen Verweis auf die benutzerdefinierte Assembly hinzuzufügen, öffnen Sie den Reporting Services-Bericht im Berichts-Designer. Gehen Sie hierzu folgendermaßen vor:
  1. Den Bericht, der die benutzerdefinierte Assembly verweisen zu öffnen.
  2. Klicken Sie im Menü Bericht auf Berichtseigenschaften .
  3. Klicken Sie im Dialogfeld Berichtseigenschaften auf die Registerkarte Verweise .
  4. Aktivieren Sie unter Verweise klicken Sie Auslassungszeichen (... ), die neben der Spaltenüberschrift AssemblyName ist.

    Hinweis: Der Klassen -Abschnitt ist nur für die Instanz-basierten Mitglieder. Es ist nicht für statische Member. Statische (auch bezeichnet als "gemeinsam genutzte" in einigen unsere Reporting Services-Dokumentation) bedeutet, dass das Element für jede Instanz der Klasse steht und jeder Instanz denselben Speicherort verwendet. Statische Member werden durch das gemeinsame-Schlüsselwort in Visual Basic und das static-Schlüsselwort in c# deklariert. Dies kann etwas verwirrend sein. Was bedeutet dies, wenn die benutzerdefinierte Assembly Instanzmember enthält, die Sie zugreifen müssen, müssen Sie den Klassennamen und den Instanznamen im Abschnitt Klassen angeben. Da die Methode wird von Reporting Services hergestellt werden mit das freigegebene-Schlüsselwort in Visual Basic als static definiert wurde, wird im Abschnitt " Informationsquellen " anstelle des Abschnitts Klassen verwendet.
  5. Klicken Sie im Dialogfeld Verweis hinzufügen auf Durchsuchen . (In SQL Server 2005, klicken Sie auf die Registerkarte Suchen .)
  6. Suchen Sie und klicken Sie dann auf die benutzerdefinierte Assembly. Klicken Sie auf Öffnen . (In SQL Server 2005, klicken Sie auf Hinzufügen , statt auf Öffnen .)
  7. Klicken Sie im Dialogfeld Verweis hinzufügen auf OK .
  8. Klicken Sie im Dialogfeld Berichtseigenschaften auf OK .
Wir können nun die benutzerdefinierte Assembly in Reporting Services verwenden.
  1. Öffnen Sie den Bericht (eine RDL-Datei) im Berichts-Designer.
  2. Fügen Sie ein Textfeld hinzu, demonstrieren von die benutzerdefinierte Assembly in Reporting Services verwenden. Dazu ziehen Sie in das leere Textfeld aus der Toolbox in den Bericht.
  3. Klicken Sie in den Text im Feld Eigenschaften auf die Value -Eigenschaft, und anschließend rufen Sie eine Funktion auf, indem die folgende Syntax verwenden.
    =ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
    In meinem Beispiel angegeben ich folgende.
    =SimpleClassLibrary.Class1.DoSomething()
    Andere Formate werden verwendet, um Code in Reporting Services zu verweisen. Beispielsweise rufen Sie eingebettet verwendet das folgende Format Code.
    =Code.MethodName()
    aus, wenn Sie, nicht statisch aufrufen oder Instanz basierende-Methode aus einer benutzerdefinierten Assembly mithilfe einer Instanz verwenden das folgende Format gibt.
    =Code.InstanceName.Method
    Hinweis: Sie würden den Verweis anders eingerichtet haben wenn Sie eine Instanz-basierten Methode verwenden möchten. Zu diesem Zweck würde Sie müssen um zum Berichtseigenschaften zu wechseln klicken Sie auf die Registerkarte Verweise und geben Sie den Klassennamen und den Instanznamen im Klassen -Abschnitt an.

Code Access Security, wenn die benutzerdefinierte Assembly zusätzliche Berechtigungen erforderlich ist

Wenn die benutzerdefinierte Assembly weitere Berechtigungen als den Standardwert Ausführung Ebenen Berechtigungen erforderlich ist, müssen Sie einige Code Access Security Änderungen vornehmen. Wenn ein Berechtigungen-Problem mit der Codezugriffssicherheit auftritt, wird wahrscheinlich "# Fehler" aus der benutzerdefinierten Assembly anstelle der erwarteten Ergebnisse angezeigt. Wenige Schritte, die Sie ermitteln, ob dieses Problem vorliegt ausführen können und ausführliche Anweisungen zum Ihrer benutzerdefinierten Assembly zusätzliche Berechtigungen gewähren, finden Sie im folgenden Artikel der Microsoft Knowledge Base:
842419Berechtigungen erteilen von für eine benutzerdefinierte Assembly, auf die in einem Bericht in Reporting Services verwiesen wird
Hinweis: Die folgende Vorgehensweise ist ein Test feststellen Code Zugriff Sicherheitsprobleme auftreten. Wird nicht empfohlen, dass Sie die folgende Vorgehensweise, verwenden da er voll vertrauenswürdig Berechtigungen auf die benutzerdefinierte Assembly gewährt.

Erstellen Sie eine neue CodeGroup für die benutzerdefinierte Assembly, und gewähren Sie volle Vertrauenswürdigkeit Berechtigungen. Dazu öffnen Sie die Programme c:\Programme\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\rssrvpolicy.config-Datei, und fügen Sie folgenden Code.
<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>
es wird empfohlen, dass einen spezifischeren Berechtigungssatz anstelle von Zuweisen dieser Berechtigungssatz der Codegruppe zu erstellen. In diesem Artikel ist, Sie soll und mit benutzerdefinierten Assemblys ausgeführt und dies erfordert mehr Details.

Hinweis: Benutzerdefinierte Assemblys arbeiten häufig problemlos in Report Designer. Allerdings vielleicht Sie, dass bei Sie bereitstellen und dann versuchen, die benutzerdefinierte Assembly im Berichtsserver auszuführen, die standardmäßig Ausführung Ebenen Berechtigungen nicht ausreichend sind. Der Grund dafür ist standardmäßig, Report Designer benutzerdefinierte Assemblys mit "FullTrust" Berechtigungen ausgeführt wird. Wenn Sie Ihre Berichte auf dem Berichtsserver bereitstellen, wird die Standardberechtigung, die in Berichtsserver erteilt wird jedoch auf Ausführung Ebene festgelegt. Wenn dieses Problem auftritt, wird wahrscheinlich "# Fehler" im Bericht-Steuerelement anstelle des erwarteten Ergebnisse aus der benutzerdefinierten Assembly angezeigt.

Eingebetteter code

Eingebetteter Code ist Code, der im Abschnitt Code im Dialogfeld Berichtseigenschaften geschrieben wird. Eingebetteter Code ist eine gute Wahl für Code, die in Ihrem Bericht mehrmals aufgerufen werden. Wenn Sie Code in mehrere Berichte wiederverwenden möchten, ist eine benutzerdefinierte Assembly wahrscheinlich die bessere Wahl. Gehen Sie folgendermaßen vor um eine eingebettete Funktion zu erstellen:
  1. Klicken Sie im Menü Bericht auf Berichtseigenschaften .
  2. Klicken Sie im Dialogfeld Berichtseigenschaften auf die Registerkarte Code
  3. Fügen Sie die folgende Funktion hinzu, und klicken Sie auf OK .
    Public Function EmbeddedFunction() as String
     	Return "this is from embedded code function"
    End Function
    
  4. Fügen Sie ein neue Textfeld, in dem Bericht.
  5. Fügen Sie Folgendes an der Value -Eigenschaft.
    =code.EmbeddedFunction
Ich möchte John für seine Arbeit in diesem Artikel danken. Er verfügt über umfassende Erfahrungen in SQL Server und mehrere Microsoft Development Sprachen und bietet Kunden arbeiten und schwierige Probleme lösen. Wir hoffen Sie, Sie in diesem Monat ?s Thema gefallen hat! Vielen Dank für Lesen! Sie gerne wie immer Ideen auf Themen, die Spalten in Zukunft behandelt werden soll oder in der Knowledge Base mithilfe des Formulars Ask For It zu senden.

Eigenschaften

Artikel-ID: 920769 - Geändert am: Freitag, 26. Januar 2007 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Reporting Services
  • Microsoft SQL Server 2000 Reporting Services
Keywords: 
kbmt kbhowto KB920769 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 920769
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com