terça-feira, 31 de maio de 2011

TechEd Brasil 2011!!! De 29/09 à 01/10 no Expo Center Norte

O TechEd Brasil 2011 já tem data e local definidos!

  • Data - de 29/setembro a 01/outubro de 2011
  • Local - Expo Center Norte - São Paulo - SP 

O TechEd é um evento organizado pela Microsoft realizado todos os anos em diversos locais pelo mundo. Durante o evento, palestras, cursos e demonstrações levam aos profissionais de TI as tendências e últimas tecnologias lançadas pela Microsoft.

Eu já estive em 2 versões do TechEd e posso dizer que vale a pena!

Por enquanto, o site do evento ainda não está atualizado. Nele, pode-se encontrar apenas um texto inicial passando as informações sobre os dias e local. Para ficar por dentro das novidades do evento, basta seguir o twitter @techedbrasil.

Assim que tiver novidades, escreverei sobre as palestras e outros aspectos do evento.

Até a próxima!

Certificações MCTS em SQL Server

Ultimamente tenho postado sobre referências e materiais de estudo para os exames de certificação Microsoft em SQL Server. Entretanto, ficou faltando descrever cada uma das certificações disponíveis para a versão 2008.

Neste artigo, vou descrever brevemente o conteúdo abordado em cada um dos exames das carreiras MCTS - Microsoft Certified Technology Specialist em SQL Server. Para cada certificação, haverá um link para a página oficial do exame, com maiores detalhes para os interessados.

Exame 70-432: TS: Microsoft SQL Server 2008, Installation and Maintenance
Voltada para DBAs SQL Server, o exame engloba assuntos como: Instalação, Configuração de Instâncias e Bancos de Dados, Gerenciamento de Arquivos, Full Text, Monitoramento, Performance Segurança, Alta Disponibilidade (Cluster, Espelhamento, Replicação, Log Shipping), Recuperação de Desastres (Backup e Restore), entre outros assuntos.

Para maiores informações sobre este exame, acesse:


Exame 70-433: TS: Microsoft SQL Server 2008, Database Development
Voltada para Desenvolvedores SQL Server, a prova abrange conteúdos relacionados à Criação de objetos de um banco de dados (Tabelas, Views, Stored Procedures, Funções, Triggers, etc), Manipulação de dados, CTEs, Manipulação de dados XML, Implementações de Full Text, Manipulação de dados geoespaciais, Otimização de consultas, Planos de execução, entre outros tópicos.

Para maiores informações sobre este exame, acesse:


Exame 70-448: TS: Microsoft SQL Server 2008, Business Intelligence Development and Maintenance
Este exame é voltado para o profissional de BI (Business Intelligence). A prova aborda 3 ferramentas principais do SQL Server:
  • SQL Server Analysis Services - utilizada para gerar e consultar cubos em bancos de dados de Data Warehouse, cada cubo pode ser amplamente customizado para atender às necessidades do negócio. Pode-se utilizá-lo como ferramenta de Data Mining.
  • SQL Server Integration Services - ferramenta de integração de dados do SQL Server, permite migrar e transformar dados entre diversas fontes de dados (desde arquivos texto até outros SGBDs).
  • SQL Server Reporting Services - ferramenta de relatório semelhante ao Crystal Reports, permite a criação de relatórios complexos e com excelente visual, acessando diversas fontes de dados. Cada relatório é representado por um arquivo XML com extensão RDL, este arquivo pode ser gerado através de ferramentas gráficas, como o Visual Studio ou o Report Builder.
Neste exame, para cada uma das ferramentas, são cobrados tópicos relacionados à instalação, configuração, implementação, segurança, performance, etc.

Para maiores informações sobre este exame, acesse:


Outros materiais
Aqui no SQL Server - Dicas você já pode encontrar referências para diversos materiais relacionados aos exames acima. Álém disso, muitos dos artigos postados também são relacionados ao conteúdo das provas.

Para ver todos os artigos relacionados aos exames de Certificação em SQL Server, acesse o endereço abaixo:


No momento estou estudando para realizar o exame 70-432, provavelmente postarei mais sobre os assuntos desta certificação. Em seguida, tentarei obter a 70-433 e a 70-448, nesta ordem.

Bom estudo para todos!

sábado, 28 de maio de 2011

Exame 70-432 - Vídeo com dicas!

Quem está estudando para o exame 70-432 pode encontrar um vídeo (em inglês) com os principais tópicos e algumas dicas muito interessantes no site da Microsoft Learning. Para baixar, acesse o endereço:


Para baixar vídeos e outros recursos relacionados aos outros produtos da Microsoft, acesse a página  abaixo (em inglês):


Bom estudo!

Dicas sobre Certificações!

A Microsoft Learning está organizando um evento on-line chamado Microsoft Exam Cram onde durante 1 hora profissionais das tecnologias Windows 7, Windows Server 2008 e  SQL Server 2008 farão apresentações sobre os tópicos avaliados nos principais exames de certificação relacionados a cada uma das tecnologias.

O evento será realizado no dia 8 de junho e as palestras serão em inglês. As incrições são gratuitas e limitadas. Confira mais detalhes em:
 

Na área de SQL Server, as 3 provas de certificação serão abordadas:

70-432 - Microsoft SQL Server 2008, Implementation and Maintenance
70-433 - Microsoft SQL Server 2008, Database Development
70-448 - Microsoft SQL Server 2008, Business Intelligence Development and Maintenance

Para registrar-se, acesse o endereço:


Já efetuei minha inscrição! Estou concluindo meus estudos para a o exame 70-432.

Comando DELETE - Retornando linhas excluídas

Para fins de log ou simples confirmação de sucesso da operação, o comando DELETE pode retornar as linhas excluídas em sua execução.

A cláusula OUTPUT é responsável por esta funcionalidade. Para utilizá-la, basta adicioná-la ao final do comando DELETE e referenciar os campos da tabela virtual (DELETED) gerada após a execução. Veja a sintaxe básica:

DELETE FROM [tabela]
OUTPUT DELETED.*

Além disso, através da cláusula WHERE pode-se filtrar as linhas retornadas. Veja o exemplo abaixo:

-- Criando tabela de teste
CREATE TABLE teste (id int identity (1,1))
GO

-- Populando tabela com 20 registros
INSERT INTO teste DEFAULT VALUES
GO 20

-- Excluindo registros da tabela e retornando apenas os registros -- excluídos com ID < 10.
DELETE FROM teste
OUTPUT DELETED.*
WHERE id < 10

-- Excluindo tabela de testes
DROP TABLE teste
GO

Ao executar este script, um conjunto de dados é retornado com as linhas excluídas cujo id não foi excluído pelo filtro. Repare que não existe um comando SELECT, o próprio comando DELETE retornou os dados:


Este é um importante recurso para a criação de logs e auditoria via banco de dados ou aplicação. Através do conjunto de dados retornado, pode-se registrar o exato momento e usuário responsável pela exclusão do registro.

Para outras informações relacionadas à criação de logs e monitoramento das atualizações em uma base de dados, veja outros artigos:


Em breve teremos mais artigos sobre auditoria e monitoramento de bancos de dados!

Até a próxima!

sexta-feira, 27 de maio de 2011

Encontrar Stored Procedures com um texto específico

Hoje precisei mapear todos os objetos que referenciam uma determinada coluna de uma tabela, pois era necessário avaliar os impactos de uma possível exclusão deste campo. Essa tarefa pode ser facilitada pela Ferramenta de Visualização de Dependências de Objetos do SQL Sever Management Studio, que lista todos os objetos que referenciam o objeto escolhido. Porém, o grande número de stored procedures referenciadas ainda tornaria esta demanda muito demorada e trabalhosa.

Para agilizar esta tarefa, procurei automatizar o processo de busca consultando informações sobre os objetos nas tabelas de sistemas.

Ao criar uma Stored Procedure em um banco de dados SQL Server, as informações referentes à procedure são armazenadas em tabelas de sistema. Apesar de não ser possível alterar os registros armazenados nestas tabelas, o SQL Server permite que os usuários - com as devidas permissões - consultem seus dados através das Views de sistema.

Veja abaixo a idéia utilizada para buscar estas informações:

SQL Server 2008
No SQL Server 2008, o script utilizado para criar a stored procedure fica armazenado no campo ROUTINE_DEFINITION da view de sistema INFORMATION_SCHEMA.ROUTINES. Assim, podemos procurar um texto no script de todas as procedures pertencentes ao banco através do script abaixo:

SELECT
      ROUTINE_SCHEMA
    , ROUTINE_NAME
FROM
    INFORMATION_SCHEMA.ROUTINES
WHERE
    ROUTINE_DEFINITION LIKE '%texto desejado%'

SQL Server 2000
No SQL Server 2000, o script de criação da stored procedure fica armazenado no campo text da view de sistema syscomments. Assim, podemos procurar um texto no script de todas as procedures pertencentes ao banco através do script abaixo:

SELECT
    O.name
FROM
    syscomments C
INNER JOIN sysobjects O ON
    C.id = O.id
WHERE
    text like '%texto desejado%'

As view de sistema contém muitas informações relevantes para facilitar a vida de um DBA ou desenvolvedor SQL Server. Explore-as!

Até a próxima!

quinta-feira, 19 de maio de 2011

[off-topic] Recuperar informações do Assembly em execução

Exibir a versão de uma aplicação em execução pode ser importante para se ter controle do impacto das alterações realizadas entre duas releases ou mesmo para identificar se um patch ou atualização foi aplicado no ambiente de produção.

Através do framework .Net, pode-se controla a versão de um aplicativo simplesmente alterando o número da versão do produto no arquivo Assembly.info, localizado na pasta Properties do projeto. A versão do projeto é representada por um conjunto de 4 números separados por pontos finais ".", cada empresa ou desenvolvedor pode definir regras para incrementar as casas que definem o número da versão.

Além disso, o .Net Framework disponibiliza algumas classes específicas para obter informações do assembly em execução. Veja no exemplo como é fácil recuperar a versão da aplicação em execução.

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()

É possível recuperar muitas outras informações utilizando o objeto da classe Assembly (objeto retornado pelo método GetExecutingAssembly()), como por exemplo a localização do próprio assembly, através da propriedade Location.

Explore as propriedades e métodos da classe Assembly sua aplicação pode ficar muito mais flexível e fácil de configurar!

quarta-feira, 4 de maio de 2011

Utilizando Colunas Computadas no SQL Server

Colunas computadas são colunas cujo valor é calculado dinamicamente através de uma expressão que pode ou não  referenciar valores de outras colunas da mesma tabela. Assim, não é possível definir valores para estas colunas durante operações de Insert e Update.

Colunas computadas podem ser utilizadas normalmente em filtros, ordenações e agrupamentos. Entretanto, para utilizá-las como chave estrangeira (foreign keys) e aplicar índices, deve-se utilizar a propriedade PERSISTED, detalhada no final deste artigo.

Ao criar uma tabela com coluna computada, omite-se o tipo de dados dessas colunas e adicona-se a cláusula AS seguida da expressão que define o valor da coluna. Veja abaixo:

CREATE TABLE Tabela
(
      colunaA INT
    , colunaB INT
    , colunaC AS colunaA + colunaB
)

Para exemplificar, utilizaremos uma tabela que armazena informações sobre pessoas. As informações armazenadas serão:

Utilizando essas informações, criaremos duas colunas calculadas para armazenar:
  • idade
  • IMC - índice de massa corporal =  peso / altura²

O script abaixo cria a tabela conforme especificado acima:

CREATE TABLE Pessoa
(
      id INT IDENTITY(1,1) PRIMARY KEY
    , nome VARCHAR(50)
    , dataNascimento DATE
    , idade AS (DATEDIFF(DAY,dataNascimento,getdate())/365)
    , altura FLOAT
    , peso FLOAT
    , imc AS CAST ((peso / (altura * altura)) AS DECIMAl(4,1))
)

Para inserir registros, omite-se as colunas computadas. O script abaixo insere duas linhas em nossa tabela:

INSERT INTO Pessoa VALUES ('João','1947-07-22',1.87,82)
INSERT INTO Pessoa VALUES ('Ricardo','1973-03-08',1.65,77)

Vamos agora selecionar os valores inseridos utilizando o comando abaixo:

SELECT * From Pessoa

Veja o resultado:


Observe que o valor das colunas Idade e IMC foi preenchido automaticamente, de acordo com a expressão definida.

Cuidado!

O SQL Server não permite a inserção ou atualização de valores em colunas computadas, o comando abaixo tenta realizar esta operação inserindo o valor 7 para a coluna IMC:

INSERT INTO Pessoa (nome,dataNascimento,altura,peso,imc) VALUES ('Ricardo','1973-03-08',1.65,77,7)

O comando acima resulta na seguinte mensagem de erro:

Msg 271, Level 16, State 1, Line 1
The column "imc" cannot be modified because it is either a computed column or is the result of a UNION operator.

Além disso, procure utilizar validações na tabela (triggers e contraints) e também nas expressões (ISNULL(), COALESCE(), etc.) para evitar erros de cálculo ao calcular o valor de uma coluna computada. Se a expressão resultar em erro em alguma das linhas do retorno uma constulta, o processamento da consulta é imediatamente encerrado e o erro é lançado. Se inserirmos uma linha com valor 0 para a coluna altura em nossa tabela, causaremos uma divisão por zero. A inserção será realizada, mas ao consultar os dados da tabela, o seguinte erro é lançado:

Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.

A Propriedade PERSISTED
O cálculo da expressão de uma coluna computada pode impactar no desempenho das consultas em uma tabela, principalmente se a expressão realizar operações complexas do ponto de vista computacional.

A proprierdade PERSISTED pode evitar esta perde de desempenho, pois as colunas computadas com esta propriedade armazenam fisicamente o valor no momento em que o registro é inserido ou alterado. Assim, não é necessário efetuar o cálculo novamente.

Mas lembre-se, para utilizar esta propriedade, a expressão que define o valor da coluna deve ser determinística.