Identity - Como dar um comando set identity_insert
15/11/2004
0
Crio esta tabela informando que o campo CODIGO (integer) será a chave primaria e será tambem um campo IDENTITY.
Meu ambiente é o Delphi7 com Ms SqlServer (MSDE).
O problema que estou tendo é que os registros do arquivo já possuem um valor para o campo codigo e portanto tenho que colocar este valor na tabela.
Para que esta inclusão seja possível tenho que dar o comando SET IDENTITY_INSERT nometabela ON.
Como são muitos registros a incluir, fiz um programa em DELPHi que le o arquivo externo e inclui os registros usando ADOQuery.Open, Adoquery.insert, Adoquery.post e adoquery.close.
Eu não sei, como, neste ambiente, dar o comando SET.
Por se tratar de um comando transact-sql penso que não posso inseri-lo em um Sql normal. Ou será que posso ??
Agradeço qualquer ajuda.
Rounilo
Rounilo
Posts
15/11/2004
Marcus.magalhaes
Por que vc não usa o DTS, que facilitaria a importação dos dados, pois conseguiria trazer todos?
Att,
17/11/2004
Rounilo
Olhe, desenvolver uma pequena aplicação no DELPHI para fazer a transferencia de dados externos eh muito simples e rápida, principalmente com as funções de copy e paste ao nosso dispor. De quebra ainda posso aproveitar para fazer algumas consistências de dados. Reitero, não estou dizendo que esta minha opção seja a melhor e acredito que não seja.
Voltando ao problema IDENTITY, com o DTS vou poder inserir nos campos identity os valores que existem nos registros antigos ????
Abusando do seu ouvido (no caso olhos), usei o Query analiser para setar
o Identity como ON e percebi que ele fica setado mesmo que eu saia do QA. Vou para o meu Programa e o executo. no momento do Adoquery.Open tudo ok. Quando vou mover os dados para o campo recebo a mensagem me informando que dados não podem ser movidos para campo IDENTITY. Por Que, pergunto eu, se o Identity esta setado On.
Para aumentar minhas dúvidas, faço o inverso, Set o identity para OFF, via QA e retiro o movimento de dados para o Identity. O sistema me responde que tenho que informar os valores do campo identity.
Bom. Não sei se Vc vai me dar algum help para o uso do DTS. Vou estudar este software.
De qualquer forma agradeço sua ajuda e o parabeniso pelo esforço e dedicação que vc dispensa aeste Site. Procuro ler quase todos os tópicos e sempre encontro, neles, a sua ajuda.
SDS
Rounilo
17/11/2004
Marcus.magalhaes
Vamos lá, por partes :
- Realmente o DTS é um pouco complicado de usar no começo, mas depois q vc pega o jeito, verá que ele é fácil e ajuda mto.
- O Set Identity_Insert se executado dentro de uma procedure, vale somente durante a execução da mesma, portanto cabe fazer um teste se quando o comando vem da aplicação o SQL Server não tratará da mesma forma.
- Para utilizar o DTS para ler arquivos TXT, utilize o EM, ele facilita a vida de quem ainda está aprendendo pq é bastante gráfico e vc não precisa num primeiro momento, saber qual objeto escolher, então, na hora que vc está definindo o [b:fed51da088]DATA SOURCE[/b:fed51da088], escolhe [b:fed51da088]TEXT FILE[/b:fed51da088] e informe o caminho. informe se o texto é delimitado ou tam.fixo e os outro itens que ele pede, é bem simples. informe o tipo de delimitador (se estiver escolhido delimitado). informe o [b:fed51da088]DATA SOURCE[/b:fed51da088] do destino como SQL Server, o servidor, o usuário e senha ou se windows authentication, e o db que deseja guardar a informação. Após isso será só escolher a tabela destino e pronto.
Obrigado pelos parabéns, estou procurando só ajudar, pois parto do principio q conhecimento deve sempre ser compartilhado. E é um prazer responder pq pode estar certo que eu tb aprendo.
Att,
Clique aqui para fazer login e interagir na Comunidade :)