Estou trabalhando com algumas tabelas em um banco de dados SQL-Server e fazendo algumas modificações cruciais. Para não perder tudo quando errar, resolvi fazer um "Gerar script" (somente dados, estou trabalhando com Microsoft SQL Server Management Studio), então agora tenho vários comandos SQL "INSERT", como :
INSERT [dbo].[User_Group_Access] ([Visible], [GroupId], [Enabled], [ControlId], [Administrator]) VALUES (0, 26, 0, 181, 0)
INSERT [dbo].[User_Group_Access] ([Visible], [GroupId], [Enabled], [ControlId], [Administrator]) VALUES (0, 26, 0, 182, 0)
Ops, fiz algo errado.
Não tem problema, pensei. Basta substituir INSERT
e UPDATE
pronto, mas isso não parece tão simples: procurando esta questão no StackOverflow, há discussões inteiras sobre transações, diferentes tecnologias de banco de dados, ...
Ok, o UPDATE
comando não funciona.
Mas deveria haver algum outro comando ( REPLACE
não funciona, SUBSTITUTE
não existe como comando), não é?
Alguém tem uma ideia?
desde já, obrigado
Você não pode simplesmente encontrar e substituir INSERT por UPDATE e fazê-lo funcionar, as sintaxes dos comandos são completamente diferentes.
Se você quiser voltar ao estado EXATO em que estava antes de começar, que é o que parece, o caminho mais rápido para você (eu acho) é o seguinte. Observe que isso fará com que você perca QUAISQUER alterações (novos registros, registros modificados) que foram feitas nesse meio tempo.
No entanto, se você precisar fazer algum tipo de mesclagem de dados, suas escolhas se tornarão mais difíceis. Nesse caso eu faria:
Além disso, minha preferência não é criar scripts para os dados, mas apenas fazer uma cópia deles. Exemplo:
SELECIONE * EM dbo.MyTableName_20240215 FROM dbo.MyTableName
criaria rapidamente uma nova tabela com a data anexada a ela. Eu poderia então fazer minhas operações na tabela real (ou fazer na cópia e verificar meu trabalho, o que funcionar melhor). Eu poderia então fazer failback com qualquer método que melhor atendesse às minhas necessidades.
Tire um instantâneo do banco de dados antes de começar. Se você errar na restauração desse instantâneo, corrija seu script e repita.
A restauração do instantâneo será mais rápida do que fazer um backup completo do banco de dados e restaurar a partir dele.
Todo o trabalho executado, por você e por terceiros, será perdido quando você restaurar.