Как я могу отбросить запрос UPDATE в SQL Server 2005?Как я могу отменить запрос UPDATE в SQL Server 2005?
Мне нужно сделать это в SQL, а не через код.
Как я могу отбросить запрос UPDATE в SQL Server 2005?Как я могу отменить запрос UPDATE в SQL Server 2005?
Мне нужно сделать это в SQL, а не через код.
Вы можете отменить заявления, которые вы выполнили в рамках транзакции. Вместо совершения транзакции откат транзакции.
Если вы обновили что-то и хотите откатить эти обновления, и вы еще не сделали этого внутри (пока еще не совершил) сделки, то я думаю, что, хотя удача ...
(ремонт вручную или восстановление резервных копий)
begin transaction
// execute SQL code here
rollback transaction
Если вы уже выполнили запрос и хотите, чтобы свернуть его назад, к сожалению, ваш единственный реальный вариант для восстановления резервной копии базы данных. Если вы используете полное резервное копирование, вы должны иметь возможность восстановить базу данных в определенный момент времени.
Что вы подразумеваете под полными резервными копиями, должен ли я делать резервную копию базы данных ежедневно, я новичок в этом? – stom
После того как обновление установлено, вы не можете отменить только одно обновление. Лучше всего вернуться к предыдущей резервной копии базы данных.
Из информации, которую вы указали, ваша лучшая вероятность восстановления - это резервное копирование базы данных. Я не думаю, что вы сможете отбросить все те изменения, которые вы проталкивали, поскольку в то время вы, по-видимому, не использовали транзакции.
Вам этот инструмент нужен, и вы можете найти его и отменить.
«Ooops - желаю, чтобы вы могли откат, который обновляет оператор без предложения where !? Журнал ApexSQL имеет возможность ROLLBACK-транзакций для баз данных SQL Server». Отличная линия! –
это платный кажется отличным, но это стоило 2000 $ –
Как уже говорилось нет ничего, что вы можете сделать, кроме как восстановить из резервной копии. По крайней мере, теперь вы научитесь всегда переносить утверждения в транзакции, чтобы увидеть, что происходит до того, как вы решите совершить. Кроме того, если у вас нет резервной копии вашей базы данных, это также научит вас делать регулярные резервные копии вашей базы данных.
Хотя мы не очень помогали вашей проблеме imediate ... надеюсь, эти ответы гарантируют, что вы не столкнетесь с этой проблемой снова в будущем.
Попробуйте
ROLLBACK WORK;
Это обычно работает
Простой сделать:
заголовка код ...
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command Set
objMyRecordset = New ADODB.Recordset
On Error GoTo ERRORHAND
Рабочий код ...
objMyConn.ConnectionString = ConnStr
objMyConn.Open
код ....
'Копирование данных из Excel'
objMyConn.BeginTrans <-- define transactions to possible be rolled back
For NewRows = 2 To Rows
objMyRecordset.AddNew
For NewColumns = 0 To Columns - 1
objMyRecordset.Fields(NewColumns).Value = ActiveSheet.Cells(NewRows, NewColumns + 1)
Next NewColumns objMyRecordset.Update Next NewRows
objMyConn.CommitTrans <- if success, commit them to DB
objMyConn.Close
ERRORHAND:
Success = False
objMyConn.RollbackTrans <-- here we roll back if error encountered somewhere
LogMessage = "ERROR writing database: " & Err.Description
...
Вы можете использовать неявные транзакции для этого
SET IMPLICIT_TRANSACTIONS ON
update Staff set staff_Name='jas' where staff_id=7
ROLLBACK
Как request-- Вы можете установить этот параметр (SET IMPLICIT_TRANSACTIONS ON
) из хранимой процедуры, установив, что хранимые процедуры как процедуры запуска.
Но SET IMPLICIT TRANSACTION ON
команда - особый контакт. Таким образом, любое соединение, отличное от того, которое запускает хранимую процедуру запуска, не будет пользоваться настройкой, которую вы установили.
в этом примере мы управляем 2 строки вставить в запросе, и если они все это верно работать, но если не не запускать ничего и ROLLBACK
DECLARE @rowcount int set @rowcount = 0 ;
BEGIN TRANSACTION [Tran1]
BEGIN TRY
insert into [database].[dbo].[tbl1] (fld1) values('1') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
insert into [database].[dbo].[tbl2] (fld1) values('2') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
IF @rowcount = 2
COMMIT TRANSACTION[Tran1]
ELSE
ROLLBACK TRANSACTION[Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION[Tran1]
END CATCH
что вы имеете в виду с обновлением? можете ли вы получить немного дальше по этому вопросу? –
Я обновил таблицу, которая была моей ужасной ошибкой ... вместо того, чтобы обновить одну строку ... с моей небрежностью обновили все строки ... как мне откат этого .... пожалуйста, помогите ..... – Guddu
Вам нужно Журнал ApexSQL. –