Usuário com melhor resposta
Ajuda Registros excluídos

Pergunta
-
Respostas
-
Estranho. Era pra funcionar.
- Tente colocar um Go entre as linhas;
- No luigar do *, informa a lista de campos.
Testei aqui e funcionou certinho:
SET IDENTITY_INSERT HumanResources.Department ON
GO
Insert Into HumanResources.Department (DepartmentID, Name, GroupName, ModifiedDate)
Values (20,'Teste2','GroupName2',GETDATE())
GO
SET IDENTITY_INSERT HumanResources.Department OFF
GO
Roberson Ferreira - Database DeveloperSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Richard Juhasz terça-feira, 3 de janeiro de 2012 21:01
Todas as Respostas
-
Ita,
Se não existir um backup desta base, não ha muito o que ser feito.
Alguns SGBD implementam a feature de rollback in time (FlashBack), porem isso no SQL ainda não existe.
Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com -
Ita,
Se não existir um backup desta base, não ha muito o que ser feito.
Alguns SGBD implementam a feature de rollback in time (FlashBack), porem isso no SQL ainda não existe.
Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.comTenho o backup do que e copiado para outra maquina, será que posso renomear este e adicionar o backup no lugar ?
.mdf
.ldf -
Ita,
Sim, voce pode fazer isso, mas eu nao aconselho, pois se voce fizer isso, sua base voltara ao tempo 100%.
Se voce possui um MDF e o LDF como Backup, faça o seguinte:
- Attache esses como uma nova base, então vamos supor que sua base se chame: ProdBase, então attache esses arquivos de backup como ProdBase_ITA
- Veja se os dados deletados se encontram nesta nova base, se sim:
INSERT INTO ProdBase.dbo.TABELA SELECT * FROM ProdBase_ITA.dbo.TABELA
Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com -
Me gera este erro:
Agradeco se poder ajudar
Msg 8101, Level 16, State 1, Line 2
An explicit value for the identity column in table 'BancoTesteGenerico.dbo.TB_USUARIO' can only be specified when a column list is used and IDENTITY_INSERT is ON. -
Ita,
Isso quer dizer que algum campo de sua tabela é identity, ou seja, auto-numeração, faça o seguinte.
SET IDENTITY_INSERT DatabaseSemDados.dbo.TABELA ON
FAÇA O CODIGO QUE ENVIEI ACIMA DE TRANSFERENCIA DOS DADOS
SET IDENTITY_INSERT DatabaseSemDados.dbo.TABELA OFF
Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com -
estou rodando isso em uma New Query no banco Original, mostra todos os registros, quando vou na tabela do banco teste. não tem nada
Atte..
SET IDENTITY_INSERT BancoTesteGenerico.dbo.usuario_sistema OFF SELECT * FROM BancoOrigem.dbo.usuario_sistema
-
Ita,
Vamos por partes, creio que voce fez confusão.
1 - Em relação ao problema original (Perda dos dados)
- A unica maneira é um backup, voce me disse que possui outro MDF e LDF desta base antes de ter sido deletado os dados certo?
Se sim, Attache esses arquivos como uma nova base de dados.
Rode um select: SELECT * FROM TABELA, na tabela que houve perda dos dados, para confirmar se essa tabela deste outro datafile possui seus dados
Se sim, sera necessario realizar o INSERT SELECT, porem uma das colunas é identity, então voce deve:
SET IDENTITY_INSERT BancoOriginalOndeOsDadosForamDeletados.Schema.TABELA ON
INSERT INTO BancoOriginalOndeOsDadosForamDeletados.Schema.TABELA SELECT * FROM BancoAttachadoAgoraComOsDados.Schema.TABELA
SET IDENTITY)INSERT BancoOriginalOndeOsDadosForamDeletados.Schema.TABELA OFF
Agora, se ao rodar o select na tabela no banco recem attachado, infelizmente este datafile não serve, neste caso voltamos a primeira pergunta, existe algum outro backup?
Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com -
Amigo, este seria o código com dados reais, quero inseri na tabela do banco BancoTesteGenerico, já rodei tanto em um quanto no outro
e gerou o erro :
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'Schema'.
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'Schema'.
Msg 156, Level 15, State 1, Line 4
Incorrect syntax near the keyword 'OFF'.Agradeço!!
SET IDENTITY_INSERT BancoTesteGenerico.dbo.usuario_sistema ON
INSERT INTO BancoTesteGenerico.Schema.usuario_sistema SELECT * FROM BancoDi.Schema.usuario_sistema
SET IDENTITY)INSERT BancoTesteGenerico.dbo.usuario_sistema OFF -
Ita,
Veja que na terceira linha, ao invez de um _ voce colocou um ), altere isso.
Outra coisa, a palavra schema, substitua pelo schema de suas tabelas, por default, se voce criou com o usuario SA, deve ser dbo.
Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com -
Ok! fiz as alterações e gerou um novo erro:
Agradeço!!
Msg 8101, Level 16, State 1, Line 2
An explicit value for the identity column in table 'BancoTesteGenerico.dbo.usuario_sistema' can only be specified when a column list is used and IDENTITY_INSERT is ON. -
-
-
Ita,
Uma coisa, no insert, na tabela que sera inserido os dados, deve-se especificas todas as colunas, segue script de exemplo:
--CRIA TABELA 1
CREATE TABLE funcionarios(id INT IDENTITY(1,1), nome VARCHAR(100))
--CRIA TABELA 2
CREATE TABLE funcionarios2(id INT IDENTITY(1,1), nome VARCHAR(100))
--CARGA DE DADOS
INSERT INTO funcionarios(nome) VALUES
('Funcionario 1'),
('Funcionario 2'),
('Funcionario 3')
--SELECT
SELECT * FROM funcionarios
/*
1 Funcionario 1
2 Funcionario 2
3 Funcionario 3
*/
--INSERT
INSERT INTO funcionarios2 SELECT * FROM funcionarios
/*
An explicit value for the identity column in table 'funcionarios2' can only be specified when a column list is used and IDENTITY_INSERT is ON.
*/
--HABILITA IDENTITY_INSERT
SET IDENTITY_INSERT funcionarios2 ON
--INSERT
INSERT INTO funcionarios2(id, nome) SELECT * FROM funcionarios
--DESABILITA
SET IDENTITY_INSERT funcionarios2 OFF
Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com -
Fiz assim, para dois campos apenas na tebela e gerou o mesmo erro:
Agradeço!!
SET IDENTITY_INSERT BancoTesteGenerico.dbo.usuario_sistema ON
INSERT INTO BancoTesteGenerico.dbo.usuario_sistema (controlefuncionario,nome)
SELECT * FROM BancoDi.dbo.usuario_sistema
SET IDENTITY_INSERT BancoTesteGenerico.dbo.usuario_sistema OFF -
Estranho. Era pra funcionar.
- Tente colocar um Go entre as linhas;
- No luigar do *, informa a lista de campos.
Testei aqui e funcionou certinho:
SET IDENTITY_INSERT HumanResources.Department ON
GO
Insert Into HumanResources.Department (DepartmentID, Name, GroupName, ModifiedDate)
Values (20,'Teste2','GroupName2',GETDATE())
GO
SET IDENTITY_INSERT HumanResources.Department OFF
GO
Roberson Ferreira - Database DeveloperSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Richard Juhasz terça-feira, 3 de janeiro de 2012 21:01