Comment faire pour utiliser des assemblys personnalisés ou code intégré dans Reporting Services

Colonne de voix de prise en charge de SQL Server

Comment faire pour utiliser des assemblys personnalisés ou code intégré dans Reporting Services

Pour personnaliser cette chronique selon vos besoins, nous souhaitons vous inviter à soumettre vos idées sur des sujets qui vous intéressent et des problèmes que vous voulez voir traités dans de futurs articles de la Base de connaissances et des chroniques Support Voice. Vous pouvez nous envoyer vos commentaires à l’aide de l’écran Ask For It . Il existe également un lien vers le formulaire au bas de cette colonne.
Bienvenue ! Je suis Sandy Yakob avec l’équipe de contenu de Microsoft SQL Server. Je suis votre hôtesse pour les colonnes de la voix de prise en charge de SQL Server. Une remarque à propos de moi : j’ai été avec Microsoft depuis 14 ans. Pour les trois dernières années, j’ai travaillé avec l’équipe SQL Server contenu.


Pour l’article de mois-ci ce, John Sirmon vous donne les étapes pour utiliser un assembly personnalisé ou un code intégré dans SQL Server 2000 Reporting Services et SQL Server 2005 Reporting Services. Cet article a été conçu pour vous donner les étapes de base pour vous aider et l’exécution d’un assembly personnalisé dans Reporting Services. John est un technicien de Support avec l’équipe de prise en charge de SQL développeurs chez Microsoft et travaille pour Microsoft depuis mars 2001. Il a travaillé avec SQL Server pour plus de 10 ans et a développement complète d’expérience avec Visual Studio de Microsoft. John titulaire d’un diplôme de B. S. en Administration des affaires de la Citadel. Il est aussi titulaire d’une certification Microsoft Certified Solution Developer (MCSD) et une certification d’administrateur de base de données certifiée Microsoft (MCDBA). J’espère que vous profitez de la colonne et s’avérer utile.

Créer un assembly personnalisé

Pour créer un assembly personnalisé, procédez comme suit :
  1. Créer une bibliothèque de classes de Visual Studio. Dans le menu fichier , pointez sur Nouveau, pointez sur projet, puis cliquez sur Bibliothèque de classes.
  2. Spécifiez le nom et l’emplacement. Par exemple, j’ai utilisé 2005\projects SimpleClassLibrary et C:\Documents and Settings\user1\My Documents\Visual Studio.
  3. Ouvrez le fichier de classe (dans mon cas, Class1.vb) et créez les fonctions que vous souhaitez utiliser dans Reporting Services. Dans mon cas, je crée simplement une fonction partagée simple.

    Remarque Dans la mesure où il s’agit d’une fonction partagée (statique dans C#), nous n’avons pas à y accéder à l’aide d’un objet instancié. Gardez à l’esprit que ceci a un effet sur comment nous faire référence à notre assembly ultérieurement dans cet article.
    Public Class Class1
    Public Shared Function DoSomething() As String
    Return "string data returned from custom assembly"
    End Function

    End Class

  4. Une fois que vous avez terminé d’ajouter tout le code, cliquez sur Créer un SimpleClassLibrary dans le menu Générer . Cette étape crée l’assembly ou le .dll managé dans le dossier bin respectifs. Dans mon exemple, cette étape créée mon assembly, SimpleClassLibrary.dll, dans le dossier de SimpleClassLibrary\bin\Debug Mes Documents\Visual Studio 2005\Projects\.

Copiez l’assembly personnalisé dans les dossiers de SQL Reporting Services

Rendre votre assembly disponibles pour le Concepteur de rapports et le serveur de rapports dans Reporting Services. Pour ce faire, vous devez copier votre fichier .dll dans le dossier du Générateur de rapports et dans le dossier du serveur de rapports.

Remarque Le chemin d’accès peut être un peu différent, en fonction de votre chemin d’installation.
  • Pour Reporting Services 2005, copiez le fichier .dll dans les dossiers suivants :
    • Programme Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
    • Programme Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin.
  • Pour Reporting Services 2000, copiez le fichier .dll dans les dossiers suivants :
    • Programme Files\Microsoft SQL Server\80\Tools\Report Designer.
    • Programme Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin.
Remarque Étant donné que vous devez effectuer ce chaque fois que vous modifiez le code, il peut être un peu fastidieuse. De nombreux développeurs créent des fichiers de commandes pour gérer cette tâche. Voici un exemple de fichier batch que vous pouvez utiliser.
@ECHO OFFREM   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"

Je gère généralement cette tâche en créant un événement post-build personnalisé dans mon projet. Pour ce faire, accédez aux propriétés de votre projet. Ensuite, cliquez sur l’onglet compiler , puis cliquez sur Événements de génération. Cela ouvre la boîte de dialogue Événements de génération . Sélectionnez la ligne de commande d’événement après générationet puis tapez ce qui suit :
copie « $(TargetPath) » « de C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\ »
Copier « Services\ReportServer\bin\ du Server\MSSQL.3\Reporting SQL C:\Program Files\Microsoft « « $(TargetPath) »
Cette méthode utilise une macro après génération pour spécifier l’emplacement de l’assembly. Pour plus d’informations sur la création d’événements post-build, visitez le site Web de Microsoft Developer Network (MSDN) à l’adresse suivante :

Ajout d’une référence à l’assembly personnalisé dans Reporting Services

Pour ajouter une référence à votre assembly personnalisé, ouvrez le rapport Reporting Services dans le Concepteur de rapports. Pour ce faire, procédez comme suit :
  1. Ouvrez le rapport qui référence l’assembly personnalisé.
  2. Dans le menu rapport , cliquez sur Propriétés du rapport.
  3. Dans la boîte de dialogue Propriétés du rapport , cliquez sur l’onglet références .
  4. Sous références, cliquez sur le bouton de sélection (...) qui se trouve à côté de l’en-tête de colonne nom de l’Assembly .



    Remarque La section Classes est uniquement pour les membres d’instance. Il n’est pas pour les membres statiques. Statique (également appelé « partagés » dans notre documentation de Reporting Services) signifie que le membre est disponible à chaque instance de la classe et chaque instance utilise le même emplacement de stockage. Les membres statiques sont déclarées avec le mot-clé partagé dans Microsoft Visual Basic et le mot clé static dans C#. Cela peut sembler un peu déroutant. Cela signifie, si votre assembly personnalisé contient dont vous avez besoin d’accéder aux membres d’instance, vous devez spécifier le nom de classe et le nom de l’instance dans la section Classes . Étant donné que la méthode que j’en appelant à partir de Reporting Services a été définie comme statiques à l’aide du mot clé partagé dans Visual Basic, je vais utiliser la section références au lieu de la section Classes .
  5. Dans la boîte de dialogue Ajouter une référence , cliquez sur Parcourir. (SQL Server 2005, cliquez sur l’onglet Parcourir .)
  6. Recherchez, puis cliquez sur l’assembly personnalisé. Cliquez sur Ouvrir. (Dans SQL Server 2005, cliquez sur Ajouter au lieu d’Ouvrir).
  7. Dans la boîte de dialogue Ajouter une référence , cliquez sur OK.
  8. Dans la boîte de dialogue Propriétés du rapport , cliquez sur OK.
Nous sommes maintenant prêts à utiliser l’assembly personnalisé dans Reporting Services.
  1. Dans le Concepteur de rapports, ouvrez le rapport (un fichier .rdl).
  2. Pour illustrer l’utilisation de l’assembly personnalisé dans Reporting Services, ajoutez une zone de texte. Pour ce faire, faites glisser une zone de texte vide de la boîte à outils pour le rapport.
  3. Dans les propriétés de la zone de texte, cliquez sur la propriété Value et ensuite d’appeler une fonction à l’aide de la syntaxe suivante.
    =ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
    Dans mon exemple, j’ai spécifié ce qui suit.
    =SimpleClassLibrary.Class1.DoSomething()
    Autres formats sont utilisés pour référencer les code dans Reporting Services. Par exemple, utilisez le format suivant si vous appelez le code incorporé.
    =Code.MethodName()
    Si vous appelez une méthode non statique ou basée sur l’instance à partir d’un assembly personnalisé à l’aide d’une instance, utilisez le format suivant.
    =Code.InstanceName.Method
    Remarque Vous aurait défini votre référence différemment si vous souhaitez utiliser une méthode basée sur l’instance. Pour ce faire, vous avez besoin pour accéder aux Propriétés d’un rapport, cliquez sur l’onglet références et puis spécifiez le nom de classe et le nom d’occurrence dans la section Classes .

Si l’assembly personnalisé nécessite d’autres autorisations de sécurité d’accès du code

Si l’assembly personnalisé requiert plus d’autorisations que les autorisations de niveau d’exécution par défaut, vous devez modifier certains code access security. En cas de problème d’autorisations avec la sécurité d’accès du code, vous verrez probablement « #Error » à partir de votre assembly personnalisé plutôt que les résultats attendus. Pour effectuer quelques opérations que vous pouvez effectuer pour déterminer si ce problème se produit et pour obtenir des instructions détaillées sur la façon d’accorder des autorisations supplémentaires à votre assembly personnalisé, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
842419 comment accorder des autorisations à un assembly personnalisé qui est référencé dans un rapport dans Reporting Services

Remarque L’approche suivante est un test afin de déterminer si les problèmes de sécurité de l’accès de code sont produisent. Nous vous déconseillons d’utiliser l’approche suivante, car elle accorde des autorisations de confiance totale à votre assembly personnalisé.



Créer un nouveau groupe de codes pour votre assembly personnalisé et ensuite accorder des autorisations de confiance totale. Pour cela, ouvrez le fichier de programme Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\rssrvpolicy.config, puis ajoutez le code suivant.
<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>

Nous vous conseillons de créer un jeu au lieu d’attribuer cette autorisation à votre code de groupe d’autorisations plus spécifique. Cet article est prévue pour vous aider et en cours d’exécution avec les assemblys personnalisés, et cela plus en détail.

Remarque Assemblys personnalisés fonctionnent en général correctement dans le Concepteur de rapports. Toutefois, vous pouvez constater que lorsque vous déployez et puis réessayez d’exécuter l’assembly personnalisé dans le serveur de rapports, les autorisations de niveau d’exécution par défaut sont insuffisantes. La raison à cela est, par défaut, le Concepteur de rapports s’exécute des assemblys personnalisés avec des autorisations « FullTrust ». Toutefois, lorsque vous déployez vos rapports à un serveur de rapports, l’autorisation par défaut qui est accordée dans le serveur de rapports est définie au niveau de l’exécution. Si ce problème se produit, vous verrez probablement « #Error » dans le contrôle de l’état au lieu des résultats attendus à partir de l’assembly personnalisé.

Code incorporé

Code incorporé est un code qui est écrit dans la section de Code de la boîte de dialogue Propriétés du rapport . Code incorporé est un bon choix pour le code qui sera appelé plusieurs fois au sein de votre rapport. Si vous souhaitez réutiliser le code dans plusieurs rapports, un assembly personnalisé est probablement un meilleur choix. Pour créer une fonction intégrée, procédez comme suit :
  1. Dans le menu rapport , cliquez sur Propriétés du rapport.
  2. Dans la boîte de dialogue Propriétés du rapport , cliquez sur l’onglet Code
  3. Ajoutez la fonction suivante, puis cliquez sur OK.
    Public Function EmbeddedFunction() as String Return "this is from embedded code function"
    End Function

  4. Dans le rapport, ajouter une nouvelle zone de texte.
  5. Ajoutez le code suivant la valeur de propriété.
    =code.EmbeddedFunction
J’aimerais remercier John pour son travail sur cet article. Il possède une expérience approfondie dans SQL Server et plusieurs langues de Microsoft Development et aime travailler avec des clients et de résoudre des problèmes complexes. J’espère que vous avez apprécié la rubrique de ce mois-ci ! Merci ! Comme toujours, n’hésitez pas à soumettre des idées sur des sujets traités dans de futurs des colonnes ou dans la Base de connaissances à l’aide de l’écran Ask For It .
Propriétés

ID d'article : 920769 - Dernière mise à jour : 9 janv. 2017 - Révision : 1

Commentaires