sábado, 30 de abril de 2011

Exame 70-433 - Material de Estudo

Para quem está se preparando para o exame de certificação TS: Microsoft SQL Server 2008, Database Development, encontrei um blog com uma iniciativa muito interessante.

Criado por Lucas Romão e Andressa Martins, o blog contém um material de estudo para o exame dividido em capítulos baseados no Kit de Treinamento da Microsoft.

No momento, o material não está concluído, mas a iniciativa é muito boa! Para quem está aprendendo, vale a pena conferir e seguir os artigos publicados.

Segue o link para o blog:

E-book gratuito sobre o SQL Server 2008 R2

O SQL Server codename Denali está para ser lançado, mas muitos ainda não tiveram oportunidade de explorar as melhorias e novas funcionalidades do SQL Server 2008 R2.

A Microsoft Press disponibilizou gratuitamente o e-Book Introducing Microsoft SQL Server 2008 R2, que explora todas as novidades da 2ª release do SQL Server 2008.

O livro está em inglês e é dividido em duas partes - "Database Administration" e "Business Intelligence Development". Para quem tiver interesse, o download pode ser feito no formato PDF ou XPS através do link:

Até a próxima!

quarta-feira, 6 de abril de 2011

Auto-numeração em colunas (IDENTITY) - Parte 3

Para terminar a série de artigos sobre colunas auto-numeradas, seguem duas novas dicas: "Reiniciando uma coluna IDENTITY" e "Especificando o valor para a coluna IDENTITY ao inserir uma linha": 

Reiniciando uma coluna IDENTITY
É possível definir o valor da coluna IDENTITY a ser atribuído à próxima linha inserida na tabela. O comando DBCC CHECKIDENT realiza esta tarefa.

DBCC CHECKIDENT (yourtable, reseed, 34)

Importante: caso seja necessário configurar manualmente o próximo valor para a coluna IDENTITY pertencente a chave primária da tabela,  tome o cuidado de configurar um valor superior a todos os valores já inseridos para esta coluna, evitando conflitos com os registros já existentes. Para garantir que isto realmente acontecerá, pode-se utilizar o comando para encontrar o menor valor permitido para reiniciar o auto-incremento:

SELECT MAX(nome_campo) + 1 FROM tabela

Especificando o valor para a coluna IDENTITY ao inserir uma linha
Por padrão, não é possível definir o valor para uma coluna IDENTITY ao inserir ou atualizar um registro. Ao tentar realizar esta operação, o seguinte erro será lançado:

Msg 8101, Level 16, State 1, Line 7
An explicit value for the identity column in table [tabela] can only be specified when a column list is used and IDENTITY_INSERT is ON.

Veja o erro abaixo:


Entretanto, pode-se utilizar o comando SET para alterar a propriedade IDENTITY_INSERT da tabela desejada e desabilitar temporariamente a validação que causa o erro acima. Assim, os comandos para realizar esta tarefa teriam a seguinte estrutura:

SET IDENTITY_INSERT nome_tabela ON

   /* Comandos para inserir registros na tabela 
   determinando valores para a coluna IDENTITY  */
   INSERT  INTO nome_tabela (campo1,campo2,... ,campoN) 
        VALUES(valor1,valor2,... , valorN)

SET IDENTITY_INSERT nome_tabela OFF

Importante: Ao habilitar a inserção de valores para a coluna IDENTITY, é necessário explicitar o nome das colunas da tabela no comando INSERT.

No exemplo abaixo, a linha que causou erro no exemplo anterior é inserida com sucesso.


OBSERVAÇÃO: Ao inserir uma linha com um valor maior do que a contagem atual para a coluna IDENTITY, a numeração automática será automaticamente modificada para iniciar a partir do valor inserido.

Referências
DBCC CHECKIDENT (Transact-SQL)