Posts Tagged ‘Sql Server’

DBA Checklist – Sobre a profissão e a rotina

Posted in Dicas, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2, SQL SERVER 7, Traduzidos on September 15th, 2009 by Silas Mendes – 1 Comment
Essa série de Check List para DBAs SQL Server foi escrita por Brad McGehee para o site http://www.simple-talk.com/ . É um texto sucinto, mas muito completo. Tomei a liberdade de adicionar algumas observações (em itálico) que normalmente apontam para outros conteúdos em português. O texto original pode ser lido aqui.

Dicas de boas práticas para tornar-se um DBA Excepcional

  • Junte-se a um grupo de usuários de SQL Server.
  • Participe pelo menos uma vez ao ano de uma conferência profissional.
  • Faça pelo menos um treinamento por ano.
  • Leia pelo menos quatro livros de SQL Server por ano.
  • Leia o e-book How to Become an Exceptional DBA.
    • Livro escrito pelo autor que dá diversas dicas de como torna-se um DBA Excepcional (download em inglês).
  • Saiba tudo o que puder sobre o seu trabalho, principalmente naquelas áreas que ninguém gosta ou quer dominar.
  • No seu trabalho, seja voluntário, envolva-se em novas tarefas e aceite desafios, isso fará com que você conheça mais sobre a organização da sua empresa.
  • Instale o SQL Server no computador da sua casa ou em seu notebook e pratique, aprendendo novas funcionalidades do SQL Server, principalmente no SQL Server 2008.
  • Participe de fóruns sobre SQL Server (fazendo e respondendo perguntas).

Dia-a-dia

  • Verifique os logs do Windows, do SQL Server e logs de segurança.
  • Verifique se todos os jobs foram executados com sucesso.
  • Veja se os backups foram executados com sucesso e se foram salvos em local seguro.
  • Monitore o espaço em disco para garantir que o SQL Server não fique sem espaço. Para um melhor desempenho, todos os discos devem ter pelo menos 20% de espaço livre.
  • Durante todo o dia, periodicamente, monitore o desempenho do seu servidor. Use o System Monitor, Profiler, DMVs, ou o SQL Server 2008 Performance Data Collector.
  • Use o Management Studio ou o Profiler para monitorar e identificar problemas de locks [bloqueios].
  • Mantenha um registro de todas as alterações feitas em seus servidores, incluindo uma documentação de todos os problemas de desempenho que você encontrar e corrigir.
  • Crie alertas no SQL Server para notificá-lo através de e-mail sobre problemas potenciais. Ao receber os e-mails tome as medidas necessárias.
  • Dedique um tempo do seu dia para aprender algo novo e promover seu desenvolvimento profissional.


Dica – Copiar grid + cabeçalhos

Posted in Dica rápida, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2 on August 27th, 2009 by Silas Mendes – 1 Comment

Hoje uma dica rápida pra melhorar a produtividade:

Você está utilizando o Management Studio e acaba de executar uma consulta; agora precisa copiar o resultado para uma planilha Excel.

Sua consulta gerou um resultado com 25 colunas e ao colar o conteúdo na planilha você nota que só vieram os dados da consulta; os nomes das 25 colunas você terá que preencher a mão.

Alterar isso é bem simples. Vá no menu Options, expanda a opção Query Results e escolha a subopção Results to Grid. Agora é só marcar a opção “Include column headers when copying or saving the results” (Inclui cabeçalho das colunas quando copiar ou salvar resultados).

tela_Cabecalho

Bom trabalho!

Verificando a existência de objetos

Posted in Dicas, Programação, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2, SQL SERVER 7 on August 21st, 2009 by Silas Mendes – Be the first to comment

Uma necessidade comum de muitos desenvolvedores é verificar a existência de objetos no banco de dados. Então vou fazer aqui uma rapidinha com exemplos bem básicos, pras situações mais comuns, vamos lá:

A tabela tb_Pedido existe no banco?

use [meuBanco]

GO

if exists

(select * from information_schema.tables where table_name = ‘tb_pedido’)

print ‘Tabela existe’

else

print ‘Tabela não existe’

 

Quais tabelas no banco possuem a coluna cod_cliente?

use [meuBanco]

GO

select table_name, data_type

from information_schema.columns

where column_name = ‘cod_cliente’

 

A coluna cod_cliente existe na tabela tb_Pedido? Se não existe, adicionar:

use [meuBanco]

GO

if exists

(select * from information_schema.columns

where table_name = ‘tb_pedido’ and column_name = ‘cod_cliente’)

 print ‘Coluna existe.’

else

alter table tb_pedido add cod_cliente int


Observe que nos três exemplos acima, utilizamos as seguintes views de metadados:

  • information_schema.tables – que apresenta diversas informações sobre as tabelas de um banco.
  • information_schema.columns – que apresenta informações sobre as colunas, das tabelas de um banco.

Ok, mas afinal o que são METADADOS?

A definição mais comum é: informação sobre os dados. Esta definição não é muito amigável, eu sei, mas o que você precisa saber é que todos os objetos que você cria no banco, como tabelas, procedures, índices, etc, tem suas informações armazenadas em tabelas de sistema do SQL Server e as views utilizadas neste post buscam esses dados nas tabelas de sistema.

Comentaremos mais sobre metadados em outro posts, mas se você deseja se aprofundar no assunto, dê uma estudada neste link.

Até +

Habilitando suporte a rede no SQL 2008

Posted in Dica rápida, SQL SERVER 2008, SQL SERVER 2008 R2, Tutorial on June 11th, 2009 by Silas Mendes – 1 Comment

A partir da versão 2005 do SQL Server, algumas opções de configuração vem desabilitadas por padrão (e por uma questão de segurança), uma delas é o suporte a rede. Mas habilita-las é muito simples.

No menu Iniciar > Programas > Microsoft SQL Server 2008 > Configuration Tools escolha a opção SQL Server Configuration Manager (ou no menu Iniciar > Executar, digite SQLServerManager10.msc).

Na janela SQL Server Configuration Manager, expanda a opção SQL Server Network Configuration e clique na subopção que contém o nome da sua instância.

habilita_rede

No meu caso, o nome da minha instância é SQLEXPRESS2008, então selecionei a subopção Protocols for SQLEXPRESS2008.

Ao clicar, observe no lado direito os diversos protocolos de rede disponíveis. Para habilitar o suporte a sua rede TCP/IP, de um double-clique sobre esse protocolo. Na nova janela, na opção Enabled, selecione a opção Yes. Feito isto, clique em OK.

Agora é necessário reiniciar seu serviço SQL Server o que pode ser feito na mesma janela. Vá na opção SQL Server Services, escolha o serviço SQL Server e com o botão direito clique em Restart.

Instalando o SQL Server 2008 Express

Posted in SQL SERVER 2008, SQL SERVER 2008 R2, Tutorial on June 11th, 2009 by Silas Mendes – 17 Comments

Hoje vou descrever os passos BÁSICOS para a instalação do SQL Server 2008 Express, esta que é a edição gratuita do SQL Server e atende muito bem pequenas aplicações (além de ser uma ótima opção pra quem quer estudar esse banco).

Na edição gratuita do SQL Server 2000 (conhecida por MSDE) até mesmo alguns DBAs sofriam para instalá-la. De lá pra cá muita coisa mudou e hoje você já conta com ferramentas gráficas para instalar e gerenciar sua instância. Essa edição do SQL Server suporta 1 CPU (com suporte a multi-core), 1 GB de RAM e bases de dados de até 4 GB (para mais espaço de armazenamento consulte este post), e ao contrário do que muitas pessoas dizem, as edições Express tem suporte a rede; o fato é que essa opção vem desabilitada, mas é muito simples ativá-la.

Nesse post vou demonstrar a instalação do SQL Express + ferramentas. Se você desejar o mesmo, ao realizar o download escolha a opção Microsoft SQL Server 2008 Express with Tools (executável: SQLEXPRWT_x86_ENU.exe); o tamanho do executável é de aproximadamente 220 MB. Segue abaixo o link para download: http://www.microsoft.com/brasil/servidores/sql/editions/express.mspx Antes de iniciar a instalação do SQL Server Express você deverá verificar:

Após as devidas verificações e atualizações, podemos iniciar a instalação. Execute o arquivo SQLEXPRWT_x86_ENU.exe e observe que do lado esquerdo da tela que é apresentada existem as opções Planning, Installation, Maintenance e etc. Na guia Planning escolha a opção System Configuration Cheker.

tela1_sql2008

Neste momento será feita uma breve verificação para indicar se falta algo para o andamento da instalação. Obtendo um retorno positivo clique em Ok e selecione na guia Installation a opção New SQL Server stand-alone installation or add features to an existing installation (Nova instalação ou adiciona opções para uma instalação já existente).

tela3_sql2008

O instalador fará uma nova verificação, se estiver tudo certo (para ver os detalhes dessa verificação clique no botão Show Details) clique no botão OK.


tela4

Na próxima tela clique em Install para instalar os arquivos que darão suporte ao restante da instalação. Clique Next.

Na tela Product Key clique em Next (observe que você não precisa de uma chave já que é esta é uma versão free). Marque a opção: “I accept the license terms” e clique em Next. Quando esta etapa finalizar, você irá escolher o que deseja instalar. Marque somente a opção Database Engine Services. Essa opção instalará o engine do SQL Server Express. Se desejar instalar também as ferramentas marque a opção Management Tools – Basic

tela5

Na próxima tela você deverá escolher por uma instância padrão (Default Instance) ou uma instância nomeada (Named Instance). Esta etapa define o nome pelo qual seu servidor SQL irá responder. Se escolher pela instância padrão o SQL terá o mesmo nome de seu servidor, se for uma instância nomeada o SQL irá atender por: NOME_SERVIDOR\NOME_SQL. 

tela6

Clique em Next.

A próxima tela traz um resumo sobre o espaço em disco que será utilizado. Clique em Next.

A seguir você deverá informar sob qual conta do Windows rodarão os serviços do SQL Server. No meu caso, como estou instalado no notebook, na caixa Account Name vou escolher a conta AUTORIDADE NT\SYSTEM para o serviço do SQL e o padrão para o SQL Browser. Em casos onde seu SQL Server utilizar recursos de rede será importante utilizar uma conta de domínio.

Clicando em Next você deverá optar pelo modo de autenticação no SQL. As duas opções são:

Windows Authentication Mode – Nessa opção, apenas contas do Windows poderão autenticar no seu SQL.

Mixed Mode – Nessa opção, poderão autenticar tanto contas Windows e contas criadas posteriormente dentro do SQL.

A Mixed Mode é a mais utilizada (apesar de não ser a recomendada pela Microsoft).

Nesse post vou escolher a opção Mixed Mode e definir uma senha para a conta system administrator (SA). Também irei adicionar uma conta Windows ao grupo de administradores do SQL. Você pode adicionar uma conta de administrador e também o usuário atual clicando no botão Add Current User. 

tela7

O SA é o usuário master do seu SQL Server, por isso não atribua uma senha fraca a ele e não ESQUEÇA essa senha .

Se estiver em dúvida sobre o modo de autenticação que deve usar, fique tranqüilo, essa configuração pode ser alterada depois. Como estamos realizando uma instalação padrão, neste momento ignore as abas Data Directories e FILESTREAM. Clique em Next.

A próxima tela pergunta se você deseja enviar automaticamente relatórios de possíveis erros para a Microsoft. Faça sua escolha e clique em Next. Agora o instalador faz uma nova verificação para validar os parâmetros informados até aqui. Se estiver tudo ok, clique em Next.

Verifique o resumo da instalação e finalmente clique em Install. Agora é só aguardar a finalização da instalação.

Considerações: Se você realizar essa instalação numa maquina com Windows XP em português, ao final poderá encontrar o seguinte erro na instalação:

tela8

Segundo a Microsoft isso não é efetivamente um erro. Isso ocorre quando tentamos instalar uma versão inglês do SQL Server (2005 ou 2008) num Windows XP SP3 não-inglês (como já comentei neste post).

Neste texto abordei somente os passos básicos para a instalação do SQL Server 2008 Express. Pretendo detalhar outras opções nos próximos posts… no próximo iremos habilitar o acesso a rede, por enquanto, bom trabalho e bons estudos.

Veja como habilitar suporte a rede aqui.


Propriedades do arquivo

Posted in Dica rápida, SQL SERVER 2000 on March 5th, 2009 by Silas Mendes – Be the first to comment

No SQL Server 2000 existe uma procedure não documentada que traz as propriedades de um arquivo, como data de criação, data de alteração e etc; sem dúvidas um recurso bastante interessante.

Veja um exemplo da chamada:

xp_getfiledetails ‘C:\WINDOWS\EXPLORER.EXE’

Problemas? Sim… essa proc não está mais disponível a partir da versão 2005.
Esse sem dúvidas é um bom motivo para não nos apegarmos à funcionalidades não documentadas… depois dá uma dor de cabeça enorme e um monte de DBA indignado correndo atrás de uma solução similar.

(Bom, mas pra quem continua com o SQL Server 2000, ainda é uma ótima opção! :D )

Verificando espaço em disco

Posted in Dica rápida, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2, SQL SERVER 7 on January 19th, 2009 by Silas Mendes – Be the first to comment

 

Para verificar o espaço livre nos discos do seu servidor de banco de dados, dentro do Query Analyser ou Management Studio execute esta procedure:

xp_fixeddrives

O resultado será algo parecido com este aí:

drive    MB free
C        38177
D        130733
X        138790
Y        8140
Z        57013

(5 row(s) affected)

Até +

Consultando objetos do banco

Posted in Dicas, Programação, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2, SQL SERVER 7 on September 2nd, 2008 by Silas Mendes – Be the first to comment

 

Durante o processo de desenvolvimento é comum realizar consultas a metadados, ou seja, consultas que retornam informações sobre o próprio banco; algo como a consulta abaixo,  que retorna todas as tabelas de um determinado banco, junto com o nome de suas colunas e o tipo de dados:

SELECT

t.name nome_tabela,

c.name nome_coluna,

ty.name tipo_dado

FROM

sysobjects t, syscolumns c, systypes ty

WHERE

t.id = c.id AND

t.type = ‘U’ AND

c.xtype = ty.type

 

Isto está errado?

Não.

No entanto não é uma boa prática realizar consultas diretamente nas tabelas de sistema. Além do esforço em entender a estrutura dessas informações e construir a query, existe a possibilidade de no futuro a Microsoft descontinuar ou alterar a estrutura de umas dessas tabelas. E aí? O que acontece com sua aplicação que estava buscando dados naquela estrutura?

Para evitar esse tipo de problemas, a partir da versão 7 do Microsoft SQL Server surgiram as Information Schema Views, um catálogo de views de metadados desenvolvidas de acordo com padrões ISO, onde a idéia é que os dados serão retornados, independente da versão do SQL Server, logo se houverem mudanças nas tabelas de sistema, sua aplicação não será afetada porque ela está buscando dados de uma view, além disso, a forma de consulta é muito simples. Veja:

Se você quer obter os mesmos dados da consulta acima utilizando uma dessas views, precisa somente disto:

SELECT

TABLE_NAME, COLUMN_NAME, DATA_TYPE

FROM

INFORMATION_SCHEMA.COLUMNS

 

Veja como é mais simples.

Quer consultar todas as tabelas de sua base que comecem com tb_pedido? Então tente isso:

SELECT

TABLE_NAME

FROM

INFORMATION_SCHEMA.TABLES

WHERE

TABLE_NAME like ‘tb_pedido%’

 

 

Se quiser consultar todas as procedures que iniciam com ‘listar%’ utilize:

SELECT

*

FROM

INFORMATION_SCHEMA.ROUTINES

WHERE

SPECIFIC_NAME like ‘listar%’ and ROUTINE_TYPE = ‘PROCEDURE’

 

Além destas existem outras views que podem te auxiliar na consulta a metadados. Veja uma  lista completa aqui.

Bom trabalho!

 

Convertendo dados

Posted in Dica rápida, Programação, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2 on August 27th, 2008 by Silas Mendes – Be the first to comment

Já ouvi diversas pessoas perguntarem a diferença entre o CAST e CONVERT e as vezes coisas comuns passam despercebidas. A idéia é a mesma: as duas funções permitem converter um tipo de dado em outro, no entanto a função CAST é padrão ANSI, então teoricamente ela pode ser usada em qualquer SGBD. Já a função CONVERT é uma função T-SQL, ou seja, específica do Microsoft SQL Server. Além desta diferença, a função CONVERT tem um opcional que permite a conversão do dado e a possibilidade de formatar o resultado, é o que chamamos de estilo, e isso pode ser bem útil, principalmente quando você está trabalhando com datatypes datetime e money/float.

Então, por exemplo,  se você quiser converter uma data e deixá-la no formato dd/mm/aaaa, deve usar o CONVERT:

select CONVERT(varchar(60), current_timestamp, 103)

No exemplo acima estamos convertendo a data atual para VARCHAR e formatando a data como dd/mm/aaaa. A formatação neste caso está utilizando o estilo 103.

Uma tabela completa com os estilos disponíves pode ser acessada neste link: http://msdn.microsoft.com/en-us/library/ms187928.aspx

Bom trabalho :)

Pequenos detalhes: SET NOCOUNT ON

Posted in Dica rápida, Programação, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2, SQL SERVER 7 on August 14th, 2008 by Silas Mendes – 1 Comment

Uma dica:

Ao executar uma procedure o SQL Server retorna para a aplicação o total de linhas afetadas.

Ex: (1 row(s) affected)

Para evitar esse tráfego (que custa no seu tempo de resposta) coloque no início de suas procedures a cláusula SET NOCOUNT ON.

Na maioria das vezes esse número é irrelevante,  mas imagine sua aplicação executando dezenas de procedures, que realizam centenas ou milhares de operações (INSERT, UPDATE, etc)  num dia.

Como dizem os mais velhos, de grão em grão a galinha enche o papo, na nossa realidade, de mili em milisegundos o seu banco também :)

Bom trabalho!

Inserindo registros via Bulk Insert

Posted in Dica rápida, Erros $#$%!, Programação, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2, SQL SERVER 7 on July 25th, 2008 by Silas Mendes – 1 Comment

Realizar tarefas utilizando interfaces e nosso amigo (mickey) mouse pode ser muito confortável, no entanto, nem sempre elas estão disponíveis, ou em alguns cenários podem não ser a solução mais adequada.

Hoje pela manhã precisava importar dados para uma de nossas bases, a tarefa era urgentíssima, mas como sabemos, é justamente nessas horas que dá tudo errado! Meu Management Studio acordou mal humorado e quando cliquei na opção importar, ele disse sem pestanejar:

Unable to cast COM object of type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.PackageNeutralClass’ to interface type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSContainer90′ (…)

“Putz. Ok, hoje é sexta-feira, posso ir no Google e pesquisar sobre esse erro”. Enquanto pensava nisso meu gerente liga perguntando: “Já importou os dados?”…

Ok, vamos deixar o Google pra lá (por enquanto).

Existe uma forma muito prática de importar dados no SQL Server e foi a ela que recorri, o comando T-SQL é o BULK INSERT e é bem simples, veja o exemplo:

BULK INSERT tbTesteImport FROM ‘C:\arquivos_temp\tx_unid.txt’

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR =‘;’

);

Neste caso o arquivo que eu precisava importar era o tx_unid.txt e ele foi gravado em C:\arquivos_temp do meu servidor SQL. Os dados desse arquivo foram importados para a tabela [tbTesteImport] e como ele tinha algumas particularidades tive que informar no BULK INSERT que ele deveria ignorar a primeira linha (era a linha de cabeçalho) e o caractere que separava um campo do outro era o ponto-e-vírgula (FIELDTERMINATOR =’;').

Pronto! Arquivo importado.

O BULK INSERT tem diversos parâmetros que você pode conferir aqui.

Em outra oportunidade irei comentar outras vantagens da utilização do BULK INSERT e também pretendo comentar sobre o BCP, mas agora vou ao Google ver se encontro o remédio pro mau humor do meu Management Studio :)

Até +

Novas certificações SQL Server

Posted in Certificação on July 18th, 2008 by Silas Mendes – 1 Comment

Essa semana tá uma correria aqui mas pra não passar em branco posto abaixo um link com novidades sobre certificações Microsoft, em especial, para o SQL Server.

O post é do meu amigo Salvador Scardua e você pode conferir clicando aqui.

Um bom fim de semana a todos :)