Olá galera,
No post Aplicação PHP rodando no Linux com banco de dados SQL Server no Windows, falei sobre o problema de strings acentuadas não aparecerem na aplicação. Após esse post, recebi alguns e-mails de visitantes solicitando que listasse quais os problemas que encontrei nessa aplicação.
Comentarei sobre alguns pontos para usuários que usam PostgreSQL e não possuem muita "intimidade" com SQL Server.
1º - Se utilizarmos na constraint de relacionamento o restrict, no SQL Server devemos usar o no action.
2º - No caso de scritps de inserção de dados, no SQL Server devemos utilizar o IDENTITY_INSERT.
No PostgreSQL, por exemplo, é suficiente fazermos INSERT INTO perfil VALUES (1, 'Administrador');, já no SQL Server devemos declarar as colunas explicitamente. Segue abaixo um trecho de código exemplificando.
SET IDENTITY_INSERT perfil ON
INSERT INTO perfil (id, nome) VALUES (1, 'Administrador');
SET IDENTITY_INSERT perfil OFF
3º - As datas no SQL Server seguem o padrão YYYYmmdd sem os hífens.
4º - No SQL Server não existe o ILIKE, o LIKE já cumpre esse papel também. Para consultas com acento devemos usar o COLLATE SQL_Latin1_General_CP1_CI_AI. Segue abaixo um exemplo.
SELECT nome FROM pessoas WHERE nome COLLATE SQL_Latin1_General_CP1_CI_AI LIKE '%Joao%'
5º - No update, a chave primária não pode ser atualizada como no PostgreSQL.
6º - A concatenação no SQL Server é feita através de "+" e não com "||" como no PostgreSQL.
Com certeza há vários pontos que não foram abordados. Os que citei se referem a uma aplicação que tive como experiência.
Você gostaria de compartilhar sua experiência com esse tipo de aplicação ?! Envie um comentário ou um e-mail que terei a maior satisfação em colocar sua dica no post.
Grande abraço a todos e até a próxima.