Upgrade SQL Server
Ao migrar de SQL 2000 para SQL 2005 existem algumas considerações importantes no Transact-SQL que necessitam de nossa atenção, por exemplo existem alguns comandos que hoje estão rodando normalmente no SQL 2000 e ao migrar simplesmente não funcionam, vamos a alguns exemplos.
/*
Exemplo de sintaxes que não funcionam ao migrar de SQL 2000 para 2005
*/
use master
if exists(select * from master.dbo.sysdatabases where name = ‘TesteCompatibilidade’)
begin
drop database TesteCompatibilidade
end
create database TesteCompatibilidade
use TesteCompatibilidade
if OBJECT_ID(‘teste’) is not null
begin
drop table teste
end
GO
— Vamos criar uma tabela para teste
create table teste (id int Identity(1,1), nome VarChar(200) default NEWID())
GO
— Vamos incluir 10 linhas na tabela teste
insert into teste values(default)
go 10
create index ix_teste on teste(nome)
GO
— Seta o banco para usar o nivel de compatibilidade do SQL Server 2000(80)
— Consultas que funcionam normalmente no SQL Server 2000
sp_dbcmptlevel TesteCompatibilidade, 80
GO
–Consulta forcando o uso de um indice sem colocar o WITH depois do nome da tabela
select * from teste(index=ix_teste)
GO
— Consulta usando order by baseado em uma coluna, porem o alias ID é do mesmo nome da coluna ID
— repare que o SQL ordenou a tabela pelo campo ID da tabela e não pelo alias ID(campo nome)
select ID, Nome as ID from teste order by ID
GO
–Consulta usando order by passando o Nome da tabela mais o alias da coluna
select ID, Nome as AliasParaNome from teste order by teste.AliasParaNome
GO
— Marca o banco para usar o nivel de compatibilidade do SQL Server 2005
— Os mesmo selects efetuados acima não funcionan no SQL Server 2005
sp_dbcmptlevel TesteCompatibilidade, 90
GO
–Consulta forcando o uso de um indice sem colocar o WITH depois do nome da tabela
select * from teste(index=ix_teste)
GO
— Consulta usando order by baseado em uma coluna, porem o alias ID é do mesmo nome da coluna ID
— repare que o SQL ordenou a tabela pelo campo ID da tabela e não pelo alias ID(campo nome)
select ID, Nome as ID from teste order by ID
GO
–Consulta usando order by passando o Nome da tabela mais o alias da coluna
select ID, Nome as AliasParaNome from teste order by teste.AliasParaNome
A Microsoft disponibiliza um software que ajuda a evitar surpresas como estas, ele se chama “Microsoft SQL Server 2005 Upgrade Advisor” vale a pena baixar o software e rodar ele na sua base para ver as incompatibilidades. Também vale a pena dar uma lida no “SQL Server 2005 Upgrade Technical Reference Guide”.
_________________________________________________________________
Fabiano Neves Amorim (MCP – MCTS – SQL Server)
Análise – NewCon Enterprise
* fabiano@cnpm.com.br – http://fabianosqlserver.spaces.live.com/
( (55 – 14) 3404-3700