Como usar assemblies personalizados ou código incorporado no Reporting Services

Traduções deste artigo Traduções deste artigo
ID do artigo: 920769 - Exibir os produtos aos quais esse artigo se aplica.
Coluna de voz de suporte do SQL Server

Como usar assemblies personalizados ou código incorporado no Reporting Services

para personalizar esta coluna às suas necessidades, queremos convidá-lo para enviar suas idéias sobre tópicos que interessam a você e problemas que você deseja ver abordados artigos do Knowledge Base no futuro e colunas de voz de suporte. Você pode enviar suas idéias e comentários usando o formulário Ask For It. Há também um link para o formulário na parte inferior desta coluna.
Expandir tudo | Recolher tudo

Neste artigo

Bem-vindo novamente! Estou Sandy Yakob com a equipe de conteúdo do Microsoft SQL Server. Eu sou sua recepcionista para as colunas voz de suporte do SQL Server. Uma rápida Observação sobre mim: foi com a Microsoft há 14 anos. Nos últimos três anos, eu ter sido trabalhando com a equipe de conteúdo do SQL Server.

Para a coluna deste mês, John Sirmon dará a você as etapas para usar um assembly personalizado ou código incorporado no SQL Server 2000 Reporting Services e SQL Server 2005 Reporting Services. Este artigo foi desenvolvido para lhe etapas básicas para você e executar com um assembly personalizado no Reporting Services. John é engenheiro de escalonamento de suporte com a equipe SQL Developer suporte da Microsoft e trabalhou na Microsoft desde março de 2001. Ele trabalhou com o SQL Server há mais de 10 anos e tem experiência com o Microsoft Visual Studio de desenvolvimento abrangente. John mantém um grau B. S. na administração de empresas de Citadel O. Ele também contém uma certificação Microsoft Certified Solution Developer (MCSD) e uma certificação Microsoft Certified Database Administrator (MCDBA). Espero que você goste da coluna e seja útil.

Criar um assembly personalizado

Para criar um assembly personalizado, execute essas etapas:
  1. Crie uma biblioteca de classe do Visual Studio. No menu arquivo , aponte para novo , aponte para Project e, em seguida, clique em Class Library .
  2. Especifique o nome e o local. Por exemplo, eu usado 2005\projects SimpleClassLibrary e C:\Documents and Settings\user1\My Documentos\Visual Studio.
  3. Abra o arquivo de classe (no meu caso, Class1.vb) e, em seguida, crie as funções que você deseja usar no Reporting Services. No meu caso, basta criar uma função compartilhada simples.

    Observação Como esta é uma função compartilhada (estática no translation from VPE for Csharp), não temos acessá-lo, usando um objeto instanciado. Tenha isso em mente que isso tenha um efeito em como nós referência nosso assembly mais adiante neste artigo.
    Public Class Class1
    
        Public Shared Function DoSomething() As String
            Return "string data returned from custom assembly"
        End Function
    
    End Class
    
  4. Depois de terminar de adicionar todo o código, clique em Criar SimpleClassLibrary no menu Build . Esta etapa cria o assembly ou gerenciado .dll na pasta bin respectivos. No meu exemplo, esta etapa criados meu assembly, SimpleClassLibrary.dll, na pasta Meus Documentos\Visual Studio 2005\Projects\ SimpleClassLibrary\bin\Debug.

Copiar o assembly personalizado para as pastas SQL Reporting Services

Disponibilize seu assembly para Report Designer e Report Server no Reporting Services. Para fazer isso, você deve copiar o .dll para a pasta Report Designer e para a pasta Report Server.

Observação O caminho pode ser um pouco diferente, dependendo do seu caminho de instalação.
  • Para o Reporting Services 2005, copie o arquivo .dll para as seguintes pastas:
    • Programa de Programas\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
    • Programa Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
  • Para Reporting Services 2000, copie o arquivo .dll para as seguintes pastas:
    • Programa de Programas\Microsoft SQL Server\80\Tools\Report Designer
    • Programa de Programas\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin
Observação Como você fazer isso cada vez que você alterar o código, ele pode ser um pouco tedioso. Muitos desenvolvedores criar arquivos em lotes para manipular esta tarefa. É aqui um arquivo de lote de exemplo pode 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"
geralmente lidar com essa tarefa criando um evento de pós-compilação personalizado no meu projeto. Para fazer isso, vá para as propriedades do seu projeto. Em seguida, clique na guia Compile e clique em Build Events . Isso abre a caixa de diálogo Build Events . Escolha Post-build linha de comando do evento e, em seguida, digite o seguinte:
cópia "$ (TargetPath)" "c:\Arquivos de Programas\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\"
Copiar "$ (TargetPath)" "C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\"
Isso usa uma macro pós-compilação para especificar o local do meu assembly. Para obter mais informações sobre como criar eventos Post-Build, visite a seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/42x5kfw4.aspx

Adicionar uma referência ao assembly personalizado no Reporting Services

Para adicionar uma referência ao seu assembly personalizado, abra o relatório do Reporting Services no Report Designer. Para fazer isso, execute as seguintes etapas:
  1. Abra o relatório que fará referência o assembly personalizado.
  2. No menu Report , clique em Propriedades do relatório .
  3. Na caixa de diálogo Propriedades do relatório , clique na guia References .
  4. Em referências , clique no botão reticências (... ) que está próximo ao cabeçalho da coluna nome do assembly .

    Observação A seção de classes é somente para membros de instância. Ele não é para membros estáticos. Estático (também conhecido como "compartilhado" em alguns nossa documentação do Reporting Services) significa que o membro está disponível para cada instância da classe e cada instância usa o mesmo local de armazenamento. Membros estáticos são declarados usando a palavra-chave compartilhada no Visual Basic e a palavra-chave estática em translation from VPE for Csharp. Isso pode ser um pouco confuso. Isso significa, se seu assembly personalizado contém membros de instância que você precisa acessar, você precisará especificar o nome de classe e o nome de instância na seção classes . Porque o método que será chamado do Reporting Services foi definido como estático, utilizando a palavra-chave compartilhada no Visual Basic, usarei a seção referências em vez da seção de classes .
  5. Na caixa de diálogo Add References , clique em Procurar . (No SQL Server 2005, clique na guia Procurar .)
  6. Localize e, em seguida, clique no assembly personalizado. Clique em Abrir . (No SQL Server 2005, clique em Adicionar em vez de Abrir .)
  7. Na caixa de diálogo Add References , clique em OK .
  8. Na caixa de diálogo Propriedades do relatório , clique em OK .
Agora estamos prontos para usar o assembly personalizado no Reporting Services.
  1. Abra o relatório (um arquivo .RDL) no Report Designer.
  2. Para demonstrar como usar o assembly personalizado no Reporting Services, adicione uma caixa de texto. Para fazer isso, arraste uma caixa de texto em branco da caixa de ferramentas para o relatório.
  3. Nas propriedades de caixa de texto, clique na propriedade Value e chamar uma função usando a sintaxe a seguir.
    =ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
    No meu exemplo, especifiquei a seguir.
    =SimpleClassLibrary.Class1.DoSomething()
    Outros formatos são usados para fazer referência a código no Reporting Services. Por exemplo, use o formato a seguir se você chamar incorporado código.
    =Code.MethodName()
    se você chamar um não-estático, ou com base instância, o método de dentro de um assembly personalizado usando uma instância, usar o seguinte formato.
    =Code.InstanceName.Method
    Observação Você poderia configurou sua referência diferente se você quisesse usar um método de instância. Para fazer isso, você poderia precisar para ir para Propriedades do relatório , clique na guia References e, em seguida, especifique o nome de classe e o nome de instância na seção classes .

Segurança de acesso de código se o assembly personalizado necessita de permissões adicionais

Se o assembly personalizado requer mais permissões do que as permissões de nível de execução do padrão, faça algumas alterações de segurança de acesso do código. Se ocorrer um problema de permissões com segurança de acesso ao código, você provavelmente verá "# erro" do seu assembly personalizado em vez dos resultados esperados. Para algumas etapas rápidas que você pode executar para determinar se esse problema está ocorrendo e para obter instruções detalhadas sobre como conceder permissões adicionais ao seu assembly personalizado, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
842419Como conceder permissões a um assembly personalizado que é referenciado em um relatório no Reporting Services
Observação A seguinte abordagem é um teste para ajudar a determinar se estão ocorrendo problemas de segurança de acesso do código. Não é recomendável que você use a seguinte abordagem porque ele concede confiança total ao seu assembly personalizado.

Criar um novo CodeGroup para seu assembly personalizado e, em seguida, conceder permissões de confiança total. Para fazer isso, abra o arquivo Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\rssrvpolicy.config e, em seguida, adicione o seguinte código.
<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>
, recomendamos que você cria um conjunto em vez de atribuir essa permissão definida para o grupo de códigos de permissões mais específicas. Este artigo é pretendido para você e em execução com assemblies personalizados, e isso requer mais detalhes.

Observação Assemblies personalizados geralmente funcionam bem no Report Designer. No entanto, você verá que, quando você implantar e, em seguida, tente executar o assembly personalizado no servidor de relatórios, as permissões de nível de execução padrão são insuficientes. É o motivo para isso, por padrão, Report Designer é executado assemblies personalizados com permissões "FullTrust". No entanto, quando você implanta os relatórios ao servidor de relatórios, a permissão padrão que é concedida no Report Server é definida para nível de execução. Se esse problema ocorrer, você provavelmente verá "# erro" no controle de relatório em vez de resultados esperados do assembly personalizado.

Código incorporado

Código incorporado é código que está escrito na seção de código da caixa de diálogo Propriedades do relatório . Código incorporado é uma boa opção para o código que será chamado várias vezes dentro de seu relatório. Se você deseja reutilizar código em vários relatórios, um assembly personalizado é provavelmente a melhor opção. Para criar uma função incorporada, execute essas etapas:
  1. No menu Report , clique em Propriedades do relatório .
  2. Na caixa de diálogo Propriedades do relatório , clique na guia código
  3. Adicione a seguinte função e, em seguida, clique em OK .
    Public Function EmbeddedFunction() as String
     	Return "this is from embedded code function"
    End Function
    
  4. No relatório, adicione uma nova caixa de texto.
  5. Adicione o seguinte para a propriedade Value .
    =code.EmbeddedFunction
Eu gostaria de agradecer a John por seu trabalho árduo neste artigo. Ele tem experiência detalhada no SQL Server e várias linguagens de desenvolvimento da Microsoft e gosta de trabalhar com os clientes e solucionar problemas de difícil. Espero que aproveitado tópico ?s deste mês! Obrigado por leitura! Como sempre, vontade enviar idéias sobre tópicos desejado no futuro abordada colunas ou na Base de dados de Conhecimento usando o formulário Ask For It.

Propriedades

ID do artigo: 920769 - Última revisão: sexta-feira, 26 de janeiro de 2007 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Reporting Services
  • Microsoft SQL Server 2000 Reporting Services
Palavras-chave: 
kbmt kbhowto KB920769 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 920769

Submeter comentários

 

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