terça-feira, 1 de dezembro de 2009
Erro no SQL Server "Cannot open backup device 'F:\foldername'. Operating system error 5(Access is denied)"
Quando ao executar um backup do SQL Server ocorrer o erro "Cannot open backup device 'F:\foldername'. Operating system error 5(Access is denied" verifique se a pasta onde está sendo gravado o backup tem permissão de gravação para o usuário utilizado para iniciar o serviço do SQL Server no servidor.
quinta-feira, 26 de novembro de 2009
Erro no SQL Server "The BackupDirectory registry key is not configured correctly"
Quando ocorrer o erro "The BackupDirectory registry key is not configured correctly" ao restaurar um banco de dados no SQL Server, altere o valor da chave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\MSSQLServer
para um caminho válido do servidor.
Caso a chave não exista, basta incluir ela com um caminho válido.
para um caminho válido do servidor.
Caso a chave não exista, basta incluir ela com um caminho válido.
domingo, 1 de novembro de 2009
Numeração Sequencial no Oracle e SQL Server
Algumas vezes precisamos numerar sequencialmente o resultado de uma consulta, e tanto o Oracle como SQL Server tem soluções parecidas para ter esta necessidade, a função Row_Number().
O uso desta função com a cláusula OVER nos possibilita resultados interessantes.
Sintaxe: Over Partition by Colunas Order by Colunas
Exemplo: Considerando uma tabela de funcionários com três colunas Empresa, IDFuncionario e Nome, queremos gerar uma coluna com a posição do funcionário em uma consulta ordenada pelo nome, onde a cada empresa o número deve ser reiniciado:
SELECT Empresa, IdFuncionario, Nome, Row_Number() Over (Partition by Empresa Order By Nome)
From Funcionarios
O uso desta função com a cláusula OVER nos possibilita resultados interessantes.
Sintaxe: Over Partition by Colunas Order by Colunas
Exemplo: Considerando uma tabela de funcionários com três colunas Empresa, IDFuncionario e Nome, queremos gerar uma coluna com a posição do funcionário em uma consulta ordenada pelo nome, onde a cada empresa o número deve ser reiniciado:
SELECT Empresa, IdFuncionario, Nome, Row_Number() Over (Partition by Empresa Order By Nome)
From Funcionarios
quinta-feira, 22 de outubro de 2009
Consulta do Espaço Livre das Tablespace no Oracle
Abaixo a consulta que lista o espaço livre em cada tablespace existente no banco de dados Oracle:
Select tablespace_name, sum(bytes)/1024/1024 as "TAMANHO(MB)"
From dba_free_space
Group by tablespace_name
Order by sum(bytes)
Select tablespace_name, sum(bytes)/1024/1024 as "TAMANHO(MB)"
From dba_free_space
Group by tablespace_name
Order by sum(bytes)
segunda-feira, 19 de outubro de 2009
SQL Server Erro Communication Link Failure
Hoje estava aparecendo a mensagem Communication Link Failure em uma base SQL Server 2005.
Pela mensagem parece algum problema de comunicação com o servidor.
O erro ocorria tanto no servidor do banco de dados como nas estações sempre que era executada determinada consulta.
Entretanto o problema era que a base de dados tinha um objeto corrompido, neste caso era um índice. Para descobrir isto executei o comando DBCC CheckDB ('nomebancodados'), e depois tive que reconstruir o índice indicado no resultado desta instrução.
Pela mensagem parece algum problema de comunicação com o servidor.
O erro ocorria tanto no servidor do banco de dados como nas estações sempre que era executada determinada consulta.
Entretanto o problema era que a base de dados tinha um objeto corrompido, neste caso era um índice. Para descobrir isto executei o comando DBCC CheckDB ('nomebancodados'), e depois tive que reconstruir o índice indicado no resultado desta instrução.
quinta-feira, 1 de outubro de 2009
Consultando as sessões ativas no SQL Server e Oracle
No Sql Server e no Oracle são disponibilizados objetos que permitem visualizar as sessões (conexões) ativas com o banco de dados.
É importante consultar estes objetos para identificar sessões que estão consumindo muitos recursos ou quem está "logado" nela.
SQL Server :
Select * From sys.sysprocesses
Oracle:
Select * from V$Session
É importante consultar estes objetos para identificar sessões que estão consumindo muitos recursos ou quem está "logado" nela.
SQL Server :
Select * From sys.sysprocesses
Oracle:
Select * from V$Session
terça-feira, 15 de setembro de 2009
Consulta de Bloqueios no Oracle (Locks)
Para consultarmos as transações que estão bloqueadas no Oracle, podemos fazer uma simples consulta nas views do banco de dados:
Select l1.sid, ' esta bloqueando ', l2.sid
From v$lock l1, v$lock l2
Where l1.block = 1
And l2.request > 0
And l1.id1=l2.id1
And l1.id2=l2.id2
Depois para ter maiores informações sobre as sessões bloqueadas consulte a view V$Session.
quarta-feira, 2 de setembro de 2009
SQL Azure

A Microsoft disponibilizou o CTP para testes do ambiente do SQL Azure. Tem como ter o primeiro contato com o banco de dados na nuvem, basta criar um login e aguardar um retorno por email para começar a trabalhar.
É possível criarmos um novo banco de dados, tabelas e dados diretamente das ferramentas do SQL Server 2008, como o Management Studio.
Apesar disto ainda não é possível ver os objetos do banco de dados no Object Explorer da ferramenta e tem alguns "macetes" para conectar no servidor. Acredito que na versão oficial tais limitações não continuem.
Existem também situações a serem observadas no desenvolvimento de soluções como limitações no uso de recursos da versão 2008 do SQL Server e tratamentos para transações de operações no banco de dados.
Mais informações em www.azure.com
sábado, 29 de agosto de 2009
Teched 2009
Estive nos dias 25 a 27 de agosto de 2009 no Teched 2009 Brasil que foi realizado em São Paulo.
Foram apresentadas diversas novidades sobre o Windows 7 e Windows 2008 R2, como também foram apresentada a versão SQL Server 2008 R2.
Um dos principais focos das palestras foi a plataforma Azure da Microsoft, que em breve deverá ser disponibilizada no Brasil também.
Uma das melhores palestras apresentadas sobre SQL Server 2008 foi a de Luciano Moreira sobre Dicas para Tornar as Queries mais Rápidas e Eficientes (blog: luticm.blogspot.com), onde foram apresentadas dicas para resolver problemas de desempenho no SQL Server 2008.
Nos próximos posts colocarei algumas informações sobre o Azure e outras novidades vistas no evento.
Foram apresentadas diversas novidades sobre o Windows 7 e Windows 2008 R2, como também foram apresentada a versão SQL Server 2008 R2.
Um dos principais focos das palestras foi a plataforma Azure da Microsoft, que em breve deverá ser disponibilizada no Brasil também.
Uma das melhores palestras apresentadas sobre SQL Server 2008 foi a de Luciano Moreira sobre Dicas para Tornar as Queries mais Rápidas e Eficientes (blog: luticm.blogspot.com), onde foram apresentadas dicas para resolver problemas de desempenho no SQL Server 2008.
Nos próximos posts colocarei algumas informações sobre o Azure e outras novidades vistas no evento.
sexta-feira, 31 de julho de 2009
Teched 2009
De 25 a 27 de agosto em São Paulo haverá a edição 2009 do Teched, maior evento sobre as tecnologias Microsoft para desenvolvedores e profissionais de TI.
Serão apresentadas diversas palestras sobre o SQL Server 2008, inclusive as novidades previstas para o SQL Server 2008 R2.
Vale a pena.
Maiores informações em www.teched.com.br
Serão apresentadas diversas palestras sobre o SQL Server 2008, inclusive as novidades previstas para o SQL Server 2008 R2.
Vale a pena.
Maiores informações em www.teched.com.br
sexta-feira, 17 de julho de 2009
Administração através de Políticas no SQL Server 2008

Saiu na edição 66 da revista SQL Magazine artigo que escrevi sobre administração através de Políticas no SQL Server 2008. Maiores detalhes em: http://www.devmedia.com.br/resumo/default.asp?site=2#1709
domingo, 21 de junho de 2009
Conexão TCP IP no osql sem a porta padrão
Quando a porta TCP/IP utilizada no servidor SQL Server não for a 1433 (porta padrão do SQL Server) e precisarmos conectar no servidor com a ferramenta osql, precisamos especificar a porta no comando de conexão com a ferramenta.
Sintaxe: osql -S tcp:nomeservidor,porta.
Exemplo: Servidor do SQL Server com o nome producao utilizando a porta 1500.
osql -S tcp:producao,1500
Sintaxe: osql -S tcp:nomeservidor,porta.
Exemplo: Servidor do SQL Server com o nome producao utilizando a porta 1500.
osql -S tcp:producao,1500
quinta-feira, 30 de abril de 2009
Tabelas do sistema no SQL Server 2005/2008
A partir do SQL Server 2005 as consultas aos objetos do banco de dados tiveram algumas alterações, abaixo estão algumas destas tabelas:
Tabela.........................................Descrição
sys.databases..............................Bancos de dados do SQL Server
sys.tables.....................................Tabelas
sys.columns................................Colunas das tabelas
sys.objects...................................Objetos do banco de dados corrente
sys.triggers..................................Triggers
sys.indexes..................................Índices
sys.index_columns....................Colunas dos índices
sys.foreign_keys.........................Chaves estrangeiras
sys.foreign_key_columns.........Colunas das chaves estrangeiras
Tabela.........................................Descrição
sys.databases..............................Bancos de dados do SQL Server
sys.tables.....................................Tabelas
sys.columns................................Colunas das tabelas
sys.objects...................................Objetos do banco de dados corrente
sys.triggers..................................Triggers
sys.indexes..................................Índices
sys.index_columns....................Colunas dos índices
sys.foreign_keys.........................Chaves estrangeiras
sys.foreign_key_columns.........Colunas das chaves estrangeiras
quarta-feira, 4 de fevereiro de 2009
Ativando estatísticas do SQL Server
Para analisar o desempenho das instruções SQL executadas no SQL Server, existe uma ferramenta simples de utilizar que são as estatísticas:
Set Statistics IO ON - Apresenta a quantidade de atividade em disco para a execução da instrução.
Set Statistics Time ON - Quantidade de tempo para analisar, compilar e executar cada instrução.
Para avaliar corretamento as estatíticas de IO é interessante executar a instrução DBCC DropCleanBuffers para tirar as páginas de cache de leitura.
Exemplo:
DBCC DropCleanBuffers
Set Statistics Time on
Set Statistics IO on
Select * From HumanResources.Employee
Resultado:
A execução do DBCC foi concluída. Se o DBCC imprimiu mensagens de erro, entre em contato com o administrador do sistema.
Tempos de Execução do SQL Server:
Tempo de CPU = 0 ms, tempo decorrido = 1 ms.
(290 linha(s) afetadas)
Tabela 'Employee'. Número de verificações 1, leituras lógicas 9, leituras físicas 2, leituras read-ahead 7, leituras lógicas lob 0, leituras físicas lob 0, leituras read-ahead lob 0.
Tempos de Execução do SQL Server:
Tempo de CPU = 20 ms, tempo decorrido = 874 ms.
Set Statistics IO ON - Apresenta a quantidade de atividade em disco para a execução da instrução.
Set Statistics Time ON - Quantidade de tempo para analisar, compilar e executar cada instrução.
Para avaliar corretamento as estatíticas de IO é interessante executar a instrução DBCC DropCleanBuffers para tirar as páginas de cache de leitura.
Exemplo:
DBCC DropCleanBuffers
Set Statistics Time on
Set Statistics IO on
Select * From HumanResources.Employee
Resultado:
A execução do DBCC foi concluída. Se o DBCC imprimiu mensagens de erro, entre em contato com o administrador do sistema.
Tempos de Execução do SQL Server:
Tempo de CPU = 0 ms, tempo decorrido = 1 ms.
(290 linha(s) afetadas)
Tabela 'Employee'. Número de verificações 1, leituras lógicas 9, leituras físicas 2, leituras read-ahead 7, leituras lógicas lob 0, leituras físicas lob 0, leituras read-ahead lob 0.
Tempos de Execução do SQL Server:
Tempo de CPU = 20 ms, tempo decorrido = 874 ms.
quarta-feira, 28 de janeiro de 2009
Escrever o nome do mês em Oracle
Muitas vezes é necessário escrever o mês por extenso. Para tanto, no Oracle basta especificar a formatação adequada:
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
January
Se o mês não estiver em uma data, mas em um campo numérico separado do dia e ano (má escolha, mas as vezes acontece), primeiro é necessário transformar em um valor do tipo Date.
SQL> select to_char(to_date(10, 'mm'), 'Month') from dual;
TO_CHAR(TO_DATE(10,'MM'),'MONTH')
------------------------------------
October
E se precisar do nome dos meses em português, basta trocar o atributo da sessão:
ALTER SESSION
SET NLS_DATE_LANGUAGE = Portuguese;
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
Janeiro
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
January
Se o mês não estiver em uma data, mas em um campo numérico separado do dia e ano (má escolha, mas as vezes acontece), primeiro é necessário transformar em um valor do tipo Date.
SQL> select to_char(to_date(10, 'mm'), 'Month') from dual;
TO_CHAR(TO_DATE(10,'MM'),'MONTH')
------------------------------------
October
E se precisar do nome dos meses em português, basta trocar o atributo da sessão:
ALTER SESSION
SET NLS_DATE_LANGUAGE = Portuguese;
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
Janeiro
Assinar:
Postagens (Atom)