07
fev
10

Aprender e se atualizar com Visual Studio e SQL Server

Boa noite!

Esta precisando se atualizar com Visual Studio 2008/2010 e SQL Server 2008/2008 R2, mas não tem idéia de onde começar? Então comece com os materiais disponíveis no site da própria Microsoft. Os principais materiais disponíveis são:

  • SQL Server 2008 R2 Update for Developers Training Kit: Download
  • SQL Server 2008 Developer Training Kit: Download
  • Visual Studio 2010 and .NET Framework 4 Training Kit: Download
  • ASP.NET MVC Training Kit: Download
  • .NET Framework 3.5 Enhancements Training Kit: Download
  • Visual Studio 2008 and .NET Framework 3.5 Training Kit: Download
  • PHP on Windows Training Kit: Download

Para um conteúdo mais denso de informações, vale a pena conferir os Innovation Labs para estas e outras tecnologias, como Windows Server 2008/2008 R2, Windows 7 e Azure:

Para um aprendizado rápido em ASP.NET e SilverLight, recomendo:

No qual esta o melhor conjuntos de tutoriais de acessos a dados com ASP.NET que eu conheço:

Também não se pode esquecer-se dos Eventos e WebCasts do sites TechNet e MSDN:

03
fev
10

Certificações: Microsoft SQL Server 2005/2008

Boa noite pessoal!

Na última aula de SQL Server 2008 no Microsoft Innovation Center de Curitiba-PR, comentei um pouco sobre os caminhos do aprendizado e certificações com SQL Server 2005/2008, mas acabei não passando alguns detalhes… os links…

A primeira prova do SQL Server 2005 (MCTS 70-431) é caracterizada pela necessidade do candidato conhecer os recursos do SQL Server 2005, sendo recomendável treinar pelo livro MCTS Self-Paced Training Kit (Exam 70-431) e alguns cursos:

Nível 200:

Nível 300:

Para as provas para MCITP (primeiro nível acima de MCTS), será necessário definir o seu caminho como DBA de “Infra-estrutura” ou “Desenvolvimento”:

No caso de Business Intelligence no SQL Server 2005, as provas são:

  • MCTS: 70-445 – Primeira prova.
  • MCITP: 70-446 – Segunda prova.

Já no SQL Server 2008, desde a primeira prova já é definido o foto do candidato:

E as provas seguintes seguem a mesma linha:

No site da Microsoft Learning, existem dois folders em PDF, que detalham graficamente os caminhos para certificações e treinamentos de SQL Server 2008.

Ou pelo site:

Para aqueles que viram as certificações MCA e MCM, posso dizer que “ouvi falar” de um brasileiro que trabalha na Microsoft que tem estas lendárias certificações, então não deve ser “impossível”:

31
jan
10

O Problema da Produtividade

Neste domingo, recebi um ótimo artigo do Márcio Fábio Althmann (MCP, Líder do grupo de usuários .NET SharpCode, e um dos ganhadores do Win The 7). Este artigo retrata claramente a opinião de um profissional da área de desenvolvimento consciente do problema da produtividade, alertando da necessidade da “produtividade com qualidade”, enfatizando que “temos que pensar antes de fazer algo, e não sair fazendo de qualquer forma só para entregar mais rápido”.

Link para o artigo:
http://bit.ly/bfbhW9

Site do Márcio Fábio Althmann:
http://www.marcioalthmann.net/

29
jan
10

Windows Virtual PC requires hardware-assisted virtualization!? I don’t care!

Se você tem um computador com processador Intel, mas ficou de fora na questão de virtualização (ver lista: http://bit.ly/7YOUzw) e teve a seguinte mensagem ao rodar o Windows Virtual PC do Windows 7:

Cannot start Windows Virtual PC Host Process. Check the System event log for more details – Windows Virtual PC requires hardware-assisted virtualization. There is no hardware-assisted virtualization support in the system.

E quando instalou Microsoft Virtual PC SP1 recebeu outra mensagem:

This program is blocked due to compatibility issues

Não jogue seu Windows 7 fora e nem compre um processador novo, ainda. Eis a uma estratégia para fazer o Microsoft Virtual PC SP1 funcionar no Windows 7 sem “hardware-assisted virtualization”. \o/

Passo 1: No painel de controle opção “Desinstalar um programa”, habilite a opção de visualizar as atualizações:

Passo 2: Encontre o Windows Virtual PC e o desinstale:

Passo 3: Reinicie o computador…

Passo 847: Depois, o seu Microsoft Virtual PC SP1 voltará a funcionar:

Passo 848: Agora grite bem alto:
Does Windows Virtual PC require hardware-assisted virtualization? I don’t care!

Special thanks:
Ben Armstrong, you saved my computer!

27
jan
10

Innovation Lab: Hospendando e conectando aplicações PHP no IIS 7 e SQL Server 2008

Boa noite pessoas,

Ontem saiu o Innovation Lab de “PHP, IIS 7 e SQL Server 2008”. Dei uma boa olhada em todo material e posso dizer ficou muito bom e completo. Depois desta iniciativa da Microsoft, creio que os que aderiram o movimento LAMP (Linux, Apache, MySQL e PHP) pode migrar tranquilamente para um mundo “WIPS” (Windows, IIS, PHP e SQL Server) principalmente pela integração com Spatial Data e o Bing Maps que ficaram “show”.

Download do material:
http://bit.ly/ctVhPH

Instalando o PHP no IIS 7.5 com FastCGI + SQL Server:
http://sqlfromhell.wordpress.com/2009/12/21/instalando-o-php-no-iis-7-5/

23
jan
10

Exceptional PowerShell DBA

Para quem já conhece PowerShell ou já assistiu palestras nos eventos SQL Server Day ou SQL Server Saturday Night, já deve ser se deparado com palestras ou artigos (Simple-Talk, iMasters, Live Spaces…) do DBA Laerte Junior. Mas para quem ainda não conhece o trabalho dele, nunca ouvi falar de PowerShell e não sabe como PowerShell pode ser “uma mão na roda” quando se trabalha com SQL Server, então dê uma olhada em alguns dos muitos bons artigos do Laerte sobre PowerShell:

Em inglês:

Simple-Talk:
http://www.simple-talk.com/author/laerte-junior/

Em português:

Listando Informações de SQL Servers Logins – Powershell:
http://laertejuniordba.spaces.live.com/blog/cns!C16042A4306A1328!994.entry

Listando informações e conectividade de Linked Servers – Powershell:
http://laertejuniordba.spaces.live.com/blog/cns!C16042A4306A1328!985.entry

Listando informação de Backups – Powershell:
http://laertejuniordba.spaces.live.com/blog/cns!C16042A4306A1328!973.entry

Check/Fix Usuários Órfãos após Restore – Powershell:
http://laertejuniordba.spaces.live.com/blog/cns!C16042A4306A1328!923.entry

Executando uma Query em Múltiplos Servidores – Powershell:
http://laertejuniordba.spaces.live.com/blog/cns!C16042A4306A1328!755.entry

19
jan
10

Innovation Lab: Implementing a Microsoft SQL Server 2008 Database

Boa noite pessoal,

Para quem esteve na minha aula nesta segunda-feira na Universidade Positivo | Microsoft Innovation Center de Curitiba, aprendendo sobre o Microsoft SQL Server 2008 pelo programa de capacitação de parceiros Microsoft SOL, e também para aqueles que gostariam de conhecer um pouco mais sobre o Microsoft SQL Server 2008, segue o link para download do material: http://bit.ly/83vLNo

Conheça o Microsoft SOL:
http://www.microsoftsol.com.br

Blog da Silvia Valadares:
http://blogs.msdn.com/silviavaladares

13
jan
10

Get a Second Shot! Year 2010

A melhor oportunidade do ano para conquistar uma Certificação Microsoft (MCP, MCTS, MCPD, MCITP), mais detalhes:

09
jan
10

Query From Hell? – Comparando a estrutura de tabelas diferentes

Boa noite pessoal,

Finalmente tive tempo para respirar e escrever um artigo neste novo ano. Para este artigo, trago algo que normalmente me deparo quando se trabalha com muitas versões de bancos de dados, que é comparar a estrutura das tabelas entre versões de banco de dados ou até mesmo quando existem tabelas semelhantes dentro de um mesmo banco de dados. Desta forma, preparei algumas consultas que relacionam as colunas de tabelas semelhantes que estejam ou não no mesmo banco de dados, mas o conceito é facilmente aplicado para outros tipos de objetos como tabelas, chaves, índices e relacionamentos.

Para situações mais complexas recomendo a utilização de ferramentas como o Visual Studio Database Edition ou o RedGate SQL Compare e Data Compare. Mas como nem sempre é possível contar com estes recursos por não serem ferramentas gratuitas, sempre é bom ter algumas consultas para situações críticas ou verificações mais urgentes.

1. Colunas de uma tabela

Para identificar as colunas de uma tabela, é possível utilizar tanto INFORMATION_SCHEMA.COLUMNS ou sys.columns ou até mesmo sys.syscolumns, conforme abaixo:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE [TABLE_NAME] = 'nome da tabela'
SELECT *
FROM sys.columns
WHERE [object_id] = OBJECT_ID('nome da tabela')
SELECT *
FROM sys.syscolumns
WHERE [id] = OBJECT_ID('nome da tabela')

2. Colunas diferentes entre duas tabelas

Nesta primeira consulta teremos como resultado as colunas diferentes entre duas tabelas, utilizando ‘FULL OUTER JOIN’ (ver artigo), tratando as diferenças no momento da seleção:

USE [AdventureWorks]
GO
SELECT
 ISNULL(A.COLUMN_NAME, B.COLUMN_NAME)
 AS [Tabela]
,CASE WHEN A.COLUMN_NAME IS NULL
 THEN 'SOMENTE EM ' + B.TABLE_NAME
 WHEN B.COLUMN_NAME IS NULL
 THEN 'SOMENTE EM ' + A.TABLE_NAME
 ELSE 'OK' END
 AS [Resultado]
FROM
(
 SELECT COLUMN_NAME, TABLE_NAME
 FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = 'Address'

) A
FULL OUTER JOIN
(
 SELECT COLUMN_NAME, TABLE_NAME
 FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = 'AddressType'

) B
ON A.COLUMN_NAME = B.COLUMN_NAME
GO

3. Colunas diferentes quando se utiliza schemas

Quando se utiliza a view sys.columns, informe dentro da função OBJECT_ID o nome do schema seguido do nome da tabela. No exemplo, é utilizado o schema ‘Person’:

USE [AdventureWorks]
GO
SELECT
 ISNULL(A.[name], B.[name])
 AS [Coluna]
,CASE WHEN A.[name] IS NULL
 THEN 'SOMENTE EM ' + B.[table]
 WHEN B.[name] IS NULL
  THEN 'SOMENTE EM ' + A.[table]
 ELSE 'OK' END
 AS [Resultado]
FROM
(
 SELECT [name]
 ,'[Person].[Address]' as [table]
 FROM sys.columns
 WHERE [object_id] = OBJECT_ID('[Person].[Address]')
) A
FULL JOIN
(
 SELECT [name]
 ,'[Person].[AddressType]' as [table]
 FROM sys.columns
 WHERE [object_id] = OBJECT_ID('[Person].[AddressType]')
) B
ON A.[name] = B.[name]
GO

Quando se utiliza INFORMATION_SCHEMA.COLUMNS, é necessário especificar ‘TABLE_SCHEMA’:

USE [AdventureWorks]
GO
SELECT
 ISNULL(A.COLUMN_NAME, B.COLUMN_NAME)
 AS [Tabela]
,CASE WHEN A.COLUMN_NAME IS NULL
 THEN 'SOMENTE EM ' + B.TABLE_NAME
 WHEN B.COLUMN_NAME IS NULL
 THEN 'SOMENTE EM ' + A.TABLE_NAME
 ELSE 'OK' END
 AS [Resultado]
FROM
(
 SELECT COLUMN_NAME
 ,TABLE_SCHEMA + '.' + TABLE_NAME AS TABLE_NAME
 FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = 'Address'
 AND TABLE_SCHEMA = 'Person'
) A
FULL OUTER JOIN
(
 SELECT COLUMN_NAME
 ,TABLE_SCHEMA + '.' + TABLE_NAME AS TABLE_NAME
 FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = 'AddressType'
 AND TABLE_SCHEMA = 'Person'
) B
ON A.COLUMN_NAME = B.COLUMN_NAME
GO

4. Colunas diferentes de tabelas de bancos de dados diferentes

A consulta para a situação mais comum no meu dia-a-dia, dois bancos de dados de versões diferentes. Observe que nos exemplos que é necessário especificar o banco de dados das views.

Utilizando sys.columns:

USE [master]
GO
SELECT
 ISNULL(A.[name], B.[name])
 AS [Coluna]
,CASE WHEN A.[name] IS NULL
 THEN 'SOMENTE EM ' + B.[table]
 WHEN B.[name] IS NULL
  THEN 'SOMENTE EM ' + A.[table]
 ELSE 'OK' END
 AS [Resultado]
FROM
(
 SELECT [name]
 ,'[AdventureWorks2008].[Person].[Address]' as [table]
 FROM [AdventureWorks2008].sys.columns
 WHERE [object_id] = OBJECT_ID('[AdventureWorks2008].[Person].[Address]')
) A
FULL JOIN
(
 SELECT [name]
 ,'[AdventureWorks].[Person].[Address]' as [table]
 FROM [AdventureWorks].sys.columns
 WHERE [object_id] = OBJECT_ID('[AdventureWorks].[Person].[Address]')
) B
ON A.[name] = B.[name]
GO

Utilizando INFORMATION_SCHEMA:

USE [master]
GO
SELECT
 ISNULL(A.COLUMN_NAME, B.COLUMN_NAME)
 AS [Tabela]
,CASE WHEN A.COLUMN_NAME IS NULL
 THEN 'SOMENTE EM ' + B.TABLE_NAME
 WHEN B.COLUMN_NAME IS NULL
 THEN 'SOMENTE EM ' + A.TABLE_NAME
 ELSE 'OK' END
 AS [Resultado]
FROM
(
 SELECT COLUMN_NAME
 , TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME AS TABLE_NAME
 FROM [AdventureWorks2008].INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = 'Address'
 AND TABLE_SCHEMA = 'Person'
) A
FULL OUTER JOIN
(
 SELECT COLUMN_NAME
 , TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME AS TABLE_NAME
 FROM [AdventureWorks].INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = 'Address'
 AND TABLE_SCHEMA = 'Person'
) B
ON A.COLUMN_NAME = B.COLUMN_NAME
GO

Eu tinha preparado algumas consultas mais complexas para comparação e merge de bancos, mas creio que somente com o conceito utilizado das consultas acima, seja possível desenvolver consultas para outros tipos de comparação.

Espero que tenham gostado, até o próximo artigo!

03
jan
10

Good Bye Mosha Pasumansky

No dia 29 de Dezembro, Mosha Pasumansky, um dos inventores da linguagem MDX, fez seu último post no seu blog de OLAP informando o fim de suas atividades com Business Intelligence e sua entrada no time do Bing, terminando sua saga na história do SSAS (SQL Server Analysis Services).

Mosha, we learn a lot from you! Good luck!

Fonte: Microsoft OLAP by Mosha Pasumansky
http://sqlblog.com/blogs/mosha/default.aspx




Sobre o blog

Blog que trata de SQL Server, soluções para problemas comuns, informações sobre ferramentas e o que vier na cabeça do MCT Paulo R. Pereira.

Twitter