segunda-feira, 22 de outubro de 2007

Versão do SQL e Service-Pack aplicado

Ok, você executou o comando SELECT @@VERSION e o resultado não foi muito claro...

Segue link para uma tabela/lista das versões e service-packs do SQL Server (todas as versões).

http://www.sqlsecurity.com/FAQs/SQLServerVersionDatabase/tabid/63/Default.aspx

domingo, 21 de outubro de 2007

SQL Server 2005

Você ainda não migrou seu banco de dados para a última versão do Microsoft SQL Server ?

Não sabe o que está perdendo...

O SQL Server 2005 está mais robusto, mais confiável, mais seguro, e ainda mais fácil de usar !

Para pequenos negócios (databases até 4Gb), a versão SQL 2005 Express Edition é gratuita.

Para quem está achando que estou ganhando comissão da Microsoft para vender seu produto, está enganado, somente gostaria de comentar que não precisei modificar uma única linha sequer das minhas aplicações Delphi (com ADO) para rodar a nova versão.

Apenas tive que padronizar os JOINS dos comandos SELECT para se adequar ao SQL ANSI 92, porque a versão 2005 não aceita mais o comando "*=" para designar um LEFT OUTER JOIN. Agora você deve especificar a cláusula FROM corretamente.

No mais, nenhuma dificuldade.

Consulte as TOP 30 Features do produto no site da Microsoft.
http://www.microsoft.com/sql/prodinfo/features/top30features.mspx

Script para Reindexar Tabelas e Liberar Espaço

Utilizo o script abaixo para verificar o status de todas as tabelas de um database, reindexar os índices das mesmas, e atualizar o espaço utilizado pelos índices.

Na primeira parte, identifico o nome do database e salvo em uma variável, para uso mais adiante.

O conceito do script baseia-se num cursor, criado a partir da lista de tabelas, armazenadas na tabela do sistema SysObjects (se preferir, utilize as tabelas do Information_Schema).

O comando para verificar a tabela, é o "dbcc checktable".
Detalhe importante: o database precisa estar em modo SINGLE_USER para este comando ser executado com sucesso.

O comando para reindexar a tabela é o "dbcc dbreindex".

O comando para atualizar o espaço utilizado é o "dbcc updateusage".

Consulte o BOL para sintaxe dos parâmetros.

Para usá-lo, abra o Query Analyzer, e posicione no database desejado.
Ou acrescente na primeira linha, o comando USE, para selecionar o database, caso necessite executar a partir do utilitário O-SQL.

-- Inicio
DECLARE @DsDatabase SYSNAME
SELECT @DsDatabase = D.Name
FROM Master..SysProcesses P, Master..SysDatabases D
WHERE P.Dbid = D.Dbid
AND P.Spid = @@Spid

DECLARE @NomeTabela VARCHAR(80)
DECLARE CursorTabelas CURSOR FAST_FORWARD
FOR
SELECT DISTINCT CONVERT(VARCHAR(80), T.Name) AS Objeto
FROM SysObjects T, SysIndexes I
WHERE T.Type = 'U'
AND I.Id = T.Id
ORDER BY Objeto
OPEN CursorTabelas
FETCH NEXT FROM CursorTabelas INTO @NomeTabela
WHILE @@fetch_status = 0
BEGIN
PRINT 'Reindexando tabela ' + @NomeTabela + '...'
IF (SELECT DATABASEPROPERTYEX (@DsDatabase, 'UserAccess')) = 'SINGLE_USER'
DBCC CHECKTABLE (@NomeTabela, REPAIR_ALLOW_DATA_LOSS)
DBCC DBREINDEX (@NomeTabela)
DBCC UPDATEUSAGE (@DsDatabase, @NomeTabela)
FETCH NEXT FROM CursorTabelas INTO @NomeTabela
END
CLOSE CursorTabelas
DEALLOCATE CursorTabelas
-- Fim

Início

Olá a todos!
Sou programador SQL Server e Delphi há 10 anos e a internet sempre foi uma fonte riquíssima de recursos - leia-se Google ;)
Portanto, decidi criar este espaço para compartilhar meu humilde conhecimento em desenvolvimento de software, e ouvir novas opiniões.

Espero que gostem, comentem por favor!

Atualmente, dirijo uma empresa de desenvolvimento de software sob medida, ou seja, no jargão da área, uma fábrica de software. Fazemos o sistema conforme as necessidades do cliente, "pacote" aqui nem pensar...

Visite: http://www.mdssistemas.inf.br/

Entre em contato: pericles@mdssistemas.inf.br