sexta-feira, maio 27, 2005

Certificado SSL no IIS - [Receita]

Para instalar um certificado SSL, auto-assinado, no IIS 5.1 sobre windows XP executar os seguintes passos:

1) fazer download do IIS 6.0 Resource Kit Tools;
2) ir à directoria "C:\Program Files\IIS Resources\SelfSSL>" (esta é a directoria de instalação por omissão) e executar "selfssl.exe";
3) dizer que sim "y" para sobrepor o certificado sobre o site desejado;
4) testar indo a https://localhost/.

Temos então um certificado SSL auto-assinado para testes.

terça-feira, maio 24, 2005

Autenticação no AS 2005

Serve este post para não esquecer que o AS 2005 só suporta Windows Authentication, não suporta SQL Authentication.

domingo, maio 22, 2005

[.NET] Acesso ao Analysis Services 2005 com ADOMD.NET

Objectivo: Utilizando o ADOMD.NET para aceder ao Analysis Services 2005, criar um browser que permita visualizar a metadata associada aos cubos e consultá-los através de queries MDX.

Tecnologia:
- Microsoft Visual Studio .NET 2005 Beta 2
- Microsoft SQL Server 2005 Beta 2 April CTP
- ADOMD.NET

- C#

ADOMD.NET é o novo modelo de objectos managed para aceder ao Analysis Services. Pemite construir aplicações cliente para fazer browsing tanto de metadata como de dados através de MDX e é suportado por XMLA, que é um standard para interacção entre clientes e providers de dados analíticos (ver www.xmla.org).

Ao contrário do que acontecia com o SQL Server 2000, onde era necessário um intermediário (XMLA/SDK) para o acesso, a versão 2005 tem suporte nativo para o XMLA, pelo que todo o acesso ao AS2005 é feito via XMLA.
É de relevar que o ADOMD.NET pode ser utilizado com o AS2000 se combinado com XMLA SDK.

É bastante similar ao ADO.NET e mantém o modelo de objectos do ADOMD (para facilitar a vida aos programadores) adicionando mais alguns objectos como o NamedSet e o KPI. Providencia alguns mecanismos para melhorar a performance como caching de metadados, segundos pedidos de listagem de cubos e outros são obtidos directamente no cliente, utiliza XML binário para comunicar com o servidor e providencia ainda compressão, já que os pedidos XMLA poder-se-ão tornar bastante palavrosos. Ao nível da segurança, por omissão todas as comunicações com o servidor são cifradas.

Para começar a utilizar o ADOMD.NET, adicionar a referência Microsoft.AnalysisServices.AdomdClient.

Conexão: começemos por ilustrar uma conexão ao servidor.

[C#]
AdomdConnection adomdconn = new AdomdConnection("Data Source=servername;Initial Catalog=Adventure Works DW;");
adomdconn.Open();
[/C#]

Estabelecer uma ligação com o AS é muito simples, um exemplo de uma connection string, poderá ser aquela que é passada por parâmetro, caso esteja instalado o sample Adventure Works. (Sample este que não é instalado por omissão na versão Beta). Atenção que o utilizador que está a correr a aplicação tem de ter permissões sobre o catalog.

Metadados: Para obter os metadados, pouco há a dizer também, pelo o que é mais proveitoso observar o código. No entanto é de mencionar que, o objecto adomdconn do tipo AdomdConnection, contém uma colecção(Cubes e Dimensions) de CubeDef e Dimension. Como era de esperar, cada objecto Dimension contém uma colecção (Hierarchies) de Hierarchy e finalmente, esta última possui uma colecção (Levels) de Level. Aceder à informação de metadados, é tão fácil como iterar por essas colecções. Apresento um exemplo da obtenção dos nomes dos cubos disponíveis:

[C#]
foreach (CubeDef cube in adomdconn.Cubes)
{
comboBox1.Items.Add(cube.Caption);
}
[/C#]

Query: Finalmente vamos ver como se pode fazer uma query MDX ao AS. Mais uma vez é tudo muito fácil. Existem mais maneiras de o fazer, mas devido à minha familiaridade com o ADO.NET, vou mostrar a maneira mais similar com esse modelo:

[C#]
DataSet ds = new DataSet();

AdomdCommand adcomm = new AdomdCommand();
adcomm.Connection = adomdconn;
adcomm.CommandText = "MDX QUERY";
AdomdDataAdapter ada = new AdomdDataAdapter(adcomm);
ada.Fill(ds);
[/C#]

Para quem já utilizou ADO.NET, o código acima não encerra qualquer segredo. É criado um objecto para albergar a query, AdomdCommand, associa-se a esse objecto a conexão e a query MDX. A query é feita via o objecto AdomdDataAdapter que posteriormente preenche um DataSet com a resposta. Voilá :) .