terça-feira, agosto 30, 2005

Blogs for the Boys

Três blogs interessantes:

WinFS:
http://blogs.msdn.com/winfs/

Visio:
http://blogs.msdn.com/mailant/

Business Scorecard Manager 2005: http://spaces.msn.com/members/iantien/PersonalSpace.aspx?_c=

Pode parecer desinteressante um blog sobre o Visio, mas a verdade é que para quem trabalha em BI, esta ferramente será bastante importante na definição de visualizações de dados de negócio.

O WinFS, é o novo sistema de ficheiros da Microsoft, com suporte relacional, e julgo que será um grande salto em frente. Já existem BETA bits para sacar em beta.microsoft.com .

quarta-feira, junho 22, 2005

ADOMD.NET e AS2000 e .NET 1.0

Está disponível aqui uma versão do ADOMD.NET para quem precisa de aceder ao Analysis Services 2000 utilizando a versão 1.0 da Framework .NET . (É necessário instalar também o XMLA SDK 1.1).

terça-feira, junho 21, 2005

metadados associados a tabelas SQL

SELECT * FROM INFORMATION_SCHEMA.COLUMNS

mérito a João Lopes.

sexta-feira, junho 10, 2005

XML no SQL Server Mobile

Para quem quiser guardar um documento xml, no SS Mobile, a melhor opção é utilizar o tipo ntext. Este é também o tipo utilizado quando há uma sincronização entre o SS e o SS Mobile, visto que o tipo XML não existe na versão móvel.

quinta-feira, junho 02, 2005

mobile trouble

Para quem está a desenvolver aplicações .NET CF, usa o VS 2005 Beta 2 para fazer deploy para o dispositivo e está a ter problemas, aconselho uma visita aqui.

Tem lá patches para passar a suportar conectividade com o dispositivo via DMA, tem um novo activesync e tem ainda um novo SDK para extender as capacidades de desenvolvimento para mobile do VS.

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á :) .

quinta-feira, março 31, 2005

Whidbey vs Yukon

Nas últimas duas semanas tenho estado a experimentar as Betas do Visual Studio 2005 e do SQL Server 2005, e existem algumas lições a retirar e relembrar:

Lição 1: As frameworks que suportam os dois produtos não são compatíveis! Posso estar enganado, mas parece até que são desenvolvidas em paralelo sem qualquer tipo de coordenação. Para instalar ambos no mesmo sistema, deve-se começar, sempre, por instalar a framework mais recente.

Lição 2: Esquecer a última afirmação da lição 1. Não forçar a co-habitação dos dois espécimens, utilizar máquinas virtuais, nomeadamente o virtual PC. Aceder ao SQL Server remotamente a partir do VS.

Lição 3: Para configurar a rede da máquina virtual, instalar o Loopback Adapter (instruções aqui), e definir o adaptador de rede da máquina virtual como sendo o loopback adapter.

quinta-feira, março 10, 2005

[.NET] Acesso ao SQLServer através de Webservice e ADO.NET

Objectivo: Criar um webservice que disponibiliza métodos para aceder a uma base de dados.

Tecnologia:
- Microsoft Visual Studio .NET 2003
- Microsoft SQL Server 2000
- IIS
- C#

Este tutorial pretende, numa primeira fase, demonstrar como utilizar a tecnologia ADO.NET para comunicar com o SQL Server. Aproveitando depois esse trabalho, constrói-se um webservice que irá disponibilizar métodos para interagir com uma base de dados.

1ª Parte
Nota: Para que se possa utilizar ADO.NET é necessário importar dois namespaces: System.Data e System.Data.SqlClient.

.Ligar à base de dados
Para este efeito utiliza-se o objecto SqlConnection.

[C#]
String connString = "Data Source=localhost; Integrated Security=SSPI; Initial Catalog=PSA"; SqlConnection sqlConn = new SqlConnection(connString);
sqlConn.Open();
//Fazer operações...
sqlConn.Close();

A connection string fornece os dados necessários à conexão. Neste caso o data source é local e a base de dados que se pretende utilizar tem o nome PSA. Ao utilizar o método de autenticação Integrated Security=SSPI, e como neste caso o acesso vai ser feito via webservice, o que vai acontecer é que o login vai ser feito com o utilizador IUSR_NOMEDAMÁQUINA o que se traduz do lado do SQL Server como o utilizador guest. Ou seja, é necessário dar permissões ao guest sobre a base de dados ou as tabelas desejadas.
Outro ponto chave consiste em fechar sempre a conexão depois de já não ser necessária, para que possa ser devolvida à pool de conexões. A reutilização de conexões é feita se a connection string for a mesma.

.Executar uma query
Demonstra-se de seguida como preencher um DataSet com o resultado de uma query.

[C#]
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT category from categories",sqlConn);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);

Utiliza-se o objecto SqlDataAdapter, passando como parâmetro a query e a conexão. A query só é executada aquando da operação Fill.

Existem no entanto casos, em que não interessa receber o resultado de uma operação (por exemplo: uma inserção ou remoção). Para este caso, e para demonstrar uma técnica diferente, utiliza-se o objecto SqlCommand.

[C#]
SqlCommand sqlComm = new SqlCommand("INSERT INTO categories (category) VALUES('"+category+"')",sqlConn);
sqlComm.ExecuteNonQuery();

Se a query retornasse apenas um valor, poder-se-ia utilizar ExecuteScalar. Para obter um efeito semelhante à query select utilizar-se-ia, por sua vez, ExecuteReader que retorna um SqlDataReader.

Terminada a primeira fase, surge a fase trivial, criar um webservice que disponibilize métodos para manipular a base de dados.

2ª Parte
Criar um webservice utilizando o VS é muito fácil, basta criar um novo projecto desse tipo. Existem porém algumas coisas a apontar:
- A classe tem de herdar de System.Web.Services.WebService (feito automaticamente pelo VS)
- Todos os métodos marcados com o atributo [WebMethod] poderão ser invocados remotamente.

Para que todo o puzzle se junte convém olhar para o código fonte fornecido.

[código fonte] Nota: Descompactar e colocar a directoria na wwwroot do IIS.
[versão PDF]