我正在处理 SQL-Server 数据库中的一些表,并且正在进行一些重要的修改。为了在搞砸时不丢失所有内容,我决定执行“生成脚本”(仅数据,我正在使用 Microsoft SQL Server Management Studio),所以现在我有一堆 SQL“INSERT”命令,例如:
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)
哎呀,我做错事了。
没问题,我想。只需替换INSERT
即可UPDATE
,但这似乎并不那么简单:在 StackOverflow 上查找这个问题,有关于事务、不同数据库技术的完整讨论,...
好吧,该UPDATE
命令不起作用。
但是应该还有其他命令(REPLACE
不起作用,SUBSTITUTE
不作为命令存在),不是吗?
有人有想法吗?
提前致谢
您不能只是找到 INSERT 并将其替换为 UPDATE 并让它工作,命令语法完全不同。
如果您想回到开始之前的确切状态(听起来就是这样),那么对您来说最快的路径(我认为)如下。 请注意,这将导致您丢失同时进行的任何更改(新记录、修改记录)。
然而,如果您不需要对数据进行某种......合并,您的选择就会变得更加困难。在那种情况下我会:
更进一步说,我对此的偏好不是编写数据脚本,而是制作数据的副本。例子:
从 dbo.MyTableName 中选择 * INTO dbo.MyTableName_20240215
将快速创建一个新表并附加日期。然后我可以在真实的表上进行操作(或者在副本上进行操作并检查我的工作,无论效果最好)。然后我可以使用最适合我的需求的任何方法进行故障恢复。
在开始之前拍摄数据库快照。如果您搞砸了从该快照的恢复,请修复您的脚本并重复。
从快照还原将比进行完整数据库备份并从中还原更快。
当您恢复时,您自己和其他人所做的所有工作都将丢失。