Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal! deixa eu ser um pouco mais claro na minha pergunta..seguinte: um site de uma cliente minha sofreu ataque e por sorte dias antes havia feito o backup dele. Acontece que ele perdeu a chave primária e o Identity da Coluna ID.
Meu campo estava Assim :
ID int (perdeu o Primary Key e o Identity)
Titulo varchar(255)
...e assim por diante
Não consegui de jeito nenhum voltar a chave primária e o Identity, na hora de salvar no modo design ele dá erro
Daí resolvi apagar esta coluna e recriá-la, notei agora q consigo até recriá-la novamente, campo id, primary key e tudo mais. mas ele vai pra baixo da minha ultima coluna e não consigo de jeito nenhum arrastá-lo de volta pra primeira coluna. o sistema diz que não é permitido. Acho q isso se deve pelo fato da tabela estar preenchida com bastante dados! não sei + o q fazer! estou com os dados todos aki e será uma pena ter q pedir pra locaweb o backup de novo e pagar 150 conto só por causa disso!
OBS.: FOI MAL!! ERA PRA TER COLOCADO ESTA INFORMAÇÃO NO MEU TÓPICO ANTERIOR MAS SEM QUERER DEVO TER CLICADO EM "CRIAR NOVO TÓPICO"
Vagner
Pelo modo "Design" você realmente não vai conseguir. O SQL trabalha com um timeout default e como sua tabela provavelmente tem muitos registros, o tempo acaba sendo excedido. Isso ocorre porque internamente o SQL cria uma tabela temporária e faz exatamente o mencionado pelo Renato, ou seja, joga os dados numa temporária e cria uma nova tabela, e depois efetua a carga dos dados.
Acredito que somente via código você conseguirá resolver esse problema. Execute uma query da seguinte forma:
SELECT
identity(int, 1, 1) as codigo, tabela_origem.campo1, tabela_origem.campo2...
INTO
tabela_destino
FROM
tabela_origem;
Depois de criar a tabela, adicione a chave primária:
ALTER TABLE tabela_destino ADD CONSTRAINT pk_tabela_destino__codigo PRIMARY KEY (codigo);
Apague a tabela de origem:
DROP TABLE tabela_origem;
Renomeie a tabela de destino para o nome original:
EXEC SP_RENAME 'tabela_destino', 'tabela_origem';
Veja se isso ajuda.
[ ]'s
Fernando Silveira
Olá Renato e Fernando muito obrigado pela ajuda! suas informações foram bastante úteis! Apaguei a tabela do servidor e importei a da minha máquina, no Import do SQL, selecionei a tabela q queria copiar cliquei em "Editar Mapeamento" Depois tiquei a bolinha "Criar tabela de destino" e no botão "EDITAR SQL", tudo dentro da própria interface...
Ele me gerou o código assim
>
CREATE TABLE [dbo].[noticias] (
[id] int not null,
[titulo] varchar(255),
[texto] text,
[imagem] varchar(30),
[DataPost] datetime,
[categoria] int
)
* Ou seja me retornou exatamente como estava minha tabela de origem, a qual não conseguia mudar a Constraint
Daí alterei a coluna id para forma q eu queria abaixo, depois foi só terminar de finalizar o import/export e ele funcionou di boa!
>
CREATE TABLE [dbo].[noticias] (
[id] int Primary Key Identity,
[titulo] varchar(255),
[texto] text,
[imagem] varchar(30),
[DataPost] datetime,
[categoria] int
)
Vlw Tópico resolvido!
Olá..!! http://forum.imasters.com.br/public/style_emoticons/default/coolio.gif
Faz um backup dos seus dados em uma outra tabela. Pode até seu uma temporária.
Depois você tenta apagar os dados na tabela com problemas com o comando "TRUNCATE TABLE"
Daí tentar gravar as informações novamente na tabela.
Sei lá, é uma idéia..!! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif
****
obs: Verifique também se você não está tentando criar no campo identity que no seu caso é chave valores repetidos. daí ele não vai aceitar. Pode ser esse o seu problema também..!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
abraços..!!
Renato http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif