Criando procedimentos armazenados
Todos os procedimentos armazenados devem ser associados a uma classe CLR (Common Language Runtime) ou COM (Component Object Model) para poderem seu usados. A classe deve ser instalada no servidor — geralmente na forma de uma DLL (Dynamic Link Library) do Microsoft ActiveX® — e registrada como um assembly no servidor ou em um banco de dados do Analysis Services.
Procedimentos armazenados são registrados em um servidor ou em um banco de dados. Procedimentos armazenados do servidor podem ser chamados a partir de qualquer contexto de consulta. Procedimentos armazenados do banco de dados podem ser acessados somente se o contexto do banco de dados for o banco de dados no qual o procedimento armazenado foi definido. Se as funções de um assembly chamarem funções de um assembly diferente, registre ambos no mesmo contexto (servidor ou banco de dados). Para um servidor ou banco de dados do Microsoft SQL Server Analysis Services implantado em um servidor, você pode usar o SQL Server Management Studio para registrar um assembly. Para um projeto do Analysis Services, você pode usar o Designer do Analysis Services para registrar um assembly no projeto.
Observação sobre segurança |
---|
Os assemblies COM podem representar um risco à segurança. Devido a esse risco e outras considerações, os assemblies COM foram preteridos no SQL Server 2008 Analysis Services (SSAS). Talvez não haja suporte para assemblies COM em versões futuras. |
Registrando um assembly de servidor
No Pesquisador de Objetos do SQL Server Management Studio, os assemblies de servidor são listados na pasta Assemblies sob uma instância do Analysis Services. Os assemblies de servidor podem conter assemblies .NET (CLR) e bibliotecas COM.
Para criar um assembly de servidor
Expanda a instância do Analysis Services no Pesquisador de Objetos, clique com o botão direito do mouse na pasta Assemblies e, em seguida, clique em Novo Assembly. Isso exibirá a caixa de diálogo Registrar Assembly de Servidor.
Em Tipo, especifique o tipo de assembly:
Como DLL de código gerenciado (CLR), especifique .NET Assembly.
Como DLL de código nativo (COM), especifique COM DLL.
Em Nome de arquivo, especifique a DLL que contém os procedimentos armazenados.
Em Nome do assembly, especifique um nome para o assembly.
Se for uma compilação de depuração da biblioteca que você usará para depurar procedimentos armazenados, marque a caixa de seleção Incluir informações sobre depurador. Para obter mais informações sobre como depurar procedimentos armazenados, consulte Depurando procedimentos armazenados.
Você pode clicar em OK para registrar o assembly imediatamente ou, na barra de ferramentas da caixa de diálogo, clicar em um comando do menu Script para criar um script da ação de registro em uma janela de consulta, um arquivo ou na Área de Transferência.
Depois de registrar um assembly de servidor, você pode configurá-lo. Para isso, basta clicar com o botão direito do mouse no assembly no Pesquisador de Objetos e, em seguida, clicar em Propriedades.
Registrando um assembly de banco de dados no servidor
No Pesquisador de Objetos do SQL Server Management Studio, os assemblies de banco de dados são listados na pasta Assemblies sob um banco de dados do Analysis Services. Os assemblies de banco de dados podem conter assemblies .NET (CLR) e bibliotecas COM.
Para criar um assembly de banco de dados em um servidor
Expanda a instância do banco de dados do Analysis Services no Pesquisador de Objetos, clique com o botão direito do mouse na pasta Assemblies e, em seguida, clique em Novo Assembly. Isso exibirá a caixa de diálogo Registrar Assembly de Banco de Dados.
Em Tipo, especifique o tipo de assembly:
Como DLL de código gerenciado (CLR), especifique .NET Assembly.
Como DLL de código nativo (COM), especifique COM DLL.
Em Nome de arquivo, especifique a DLL que contém os procedimentos armazenados.
Em Nome do assembly, especifique um nome para o assembly.
Se for uma compilação de depuração da biblioteca que você usará para depurar procedimentos armazenados, marque a caixa de seleção Incluir informações sobre depurador. Para obter mais informações sobre como depurar procedimentos armazenados, consulte Depurando procedimentos armazenados.
Você pode clicar em OK para registrar o assembly imediatamente ou, na barra de ferramentas da caixa de diálogo, clicar em um comando do menu Script para criar um script da ação de registro em uma janela de consulta, um arquivo ou na Área de Transferência.
Depois de registrar um assembly de banco de dados, você pode configurá-lo. Para isso, basta clicar com o botão direito do mouse no assembly no Pesquisador de Objetos e, em seguida, clicar em Propriedades.
Registrando um assembly de banco de dados em um projeto
No Gerenciador de Soluções do SSDT (Ferramentas de dados do SQL Server), os assemblies de banco de dados são listados na pasta Assemblies sob um projeto do Analysis Services. Os assemblies de banco de dados podem conter assemblies .NET (CLR) e bibliotecas COM.
Para criar um assembly de banco de dados em um projeto do Analysis Service
Expanda a instância do banco de dados do Analysis Services no Pesquisador de Objetos, clique com o botão direito do mouse na pasta Assemblies e, em seguida, clique em Nova Referência de Assembly. Isso exibirá a caixa de diálogo Adicionar Referência. A guia .NET da caixa de diálogo Adicionar Referência lista os assemblies .NET (CLR) existentes, enquanto a guia Projetos lista os projetos.
Você pode clicar em um componente ou projeto existente e, em seguida, clicar em Adicionar para adicioná-lo ao projeto do Analysis Services. Para adicionar uma referência a uma DLL COM, clique na guia Navegar para localizar o arquivo. A lista Projetos e componentes selecionados mostra nome, tipo, versão e localização de cada componente que você está adicionando ao projeto.
Quando terminar de selecionar os componentes a serem adicionados, clique em OK para adicioná-los ao projeto do Analysis Services.
Formato de script para um assembly
Registrar um assembly .NET é bastante simples. Um assembly .NET é adicionado a um banco de dados em formato binário que usa o seguinte formato:
<Create>
<ObjectDefinition>
<Assembly>
<Files>
<File>
<Name>filename</Name>
<Type>filetype</Type>
<Data>
<Block>binarydatablock</Block>
<Block>binarydatablock</Block>
...
</Data>
</File>
</Files>
<PermissionSet>PermissionSet</PermissionSet>
</Assembly>
<ObjectDefinition>
</Create>