Problemas (SQL Server 2005)
29/03/2011
0
Seguinte tenho um problema com o SQL Server 2005 e não faço a mínima de como resolver.
Tenho a versão do SQL Server 2005 Express instalada na minha máquina, e executo nela um comando assim:
UPDATE TABELA SET CAMPO = ' ' WHERE CODIGO = 1
Eu quero inserir em um campo três espaços em branco. Esse campo é um VARCHAR(3). Isso funciona OK na minha versão Express.
Quando executo o mesmo procedimento em um dos nossos servidores com a versão Enterprise do SQL Server, ele não se comporta da mesma forma.
Ao invés de inserir os três espaços em branco, ele inseri apenas 1.
O que pode ser??? Alguma configuração???
Valeu pessoa !!
Carlos Souza
Posts
29/03/2011
Wilson Junior
Espero ter colaborado.
29/03/2011
Carlos Souza
Mas nesse caso o problema não é esse. Porque um caracter em branco é um caracter em branco. O Banco não ignora esse tipo de informação.
O que o campo VARCHAR faz é: caso ele tenha um tamanho 10 e eu passe uma informação de tamanho 5, ele ocupa apenas 5 espaços deixando 5 livre. Já um campo CHAR ocuparia os 10 espaços independentemente do que eu informar.
Tanto que na minha versão SQL Server 2005 Express o comando funciona OK.
Me ajudem por favor !!!
29/03/2011
Wilson Junior
Pois dependendo da ferramenta que vc utiliza, a mesma pode retirar os espaços em branco do final, já passei por isto.
Espero ter colaborado.
29/03/2011
Carlos Souza
Será que isso pode ser alguma propriedade do banco??
Eu comparei as propriedade da versão 2005 Express (onde o comando funciona) com a versão 2005 Enterprise (onde não funciona) e aparentemente estão iguais !!
Ta me lascando isso !!
30/03/2011
Carlos Souza
***********
Exec sp_help <NomeDaTabela>
Provavelmente, na versão Express, você terá a opção TrimTrailingBlanks, correpondente à coluna da sua tabela que está sendo atualizada, como "no" e na versão Enterprise estará como "yes".
Quando está propriedade está definida como 'yes', ao gravar os dados na tabela o SQL Server retira os espaços em branco após a string. Por exemplo: 'valor 1 ', será gravado como 'valor 1'. Porém, quando a propriedade estiver como 'no' os dados serão gravados com os espaços no fim.
Se este realmente for o seu problema, você pode alterar esta propriedade efetuando um alter na coluna que você está tentando atualizar, porém, deve especificar antes
SET ANSI_PADDING ON
conforme o exemplo do Marcelo.
Quando você criar ou alterar uma coluna de uma tabela com a opção ANSI_PADDING ON, essas colunas armazenaram os espaços em branco após o texto. Agora, se você utilizar a opção ANSI_PADDING OFF, o SQL Server descartará os espaços após o texto.
Ex para alterar o propriedade para que passe a armazenar os espaços em branco após o texto:
SET ANSI_PADDING ON
Go
ALTER TABLE <Tabela> ALTER COLUMN <Coluna> <Tipo> [Constraints]
Clique aqui para fazer login e interagir na Comunidade :)