Как я могу справиться с выполнением специальных запросов в производственной среде?

84
6

Я сталкиваюсь с некоторыми сценариями, где я должен либо удалить, либо изменить запись вручную в нашей производственной базе данных. Обычно это происходит там, где приложение не работает так, как планировалось.

Как я могу удалить или обновить эти записи, не случайно удаляя или изменяя все записи в таблице, с которой я работаю?

Являются ли транзакции подходящим способом достижения этого?

Я использую SQL Server Management Studio, если это помогает.

спросил(а) 2011-12-12T15:48:00+04:00 8 лет, 2 месяца назад
2
Решение
71

Да. Сделки ВСЕГДА хорошая идея.

Проверьте раздел OUTPUT. Начните транзакцию, выполните свое выражение о обновлении или удалении с помощью предложения вывода на месте, проверьте результаты и затем совершите транзакцию.

Я делаю это:

BEGIN TRANSACTION;
DELETE table1
OUTPUT DELETED.*;
ROLLBACK TRANSACTION;

Я запустил это, найдите время, чтобы посмотреть на результаты. Затем измените последнее утверждение COMMIT TRANSACTION когда я буду удовлетворен, и запустите его снова.

Тем не менее, я сделал бы почти все, что мог, чтобы этого не делать. Это пугает меня. Если вы обнаружите, что делаете это более одного раза, возможно, добавьте что-то в свое приложение, которое предоставляет эту функцию регистрации (или исправьте ошибку, которую вы очищаете).

ответил(а) 2011-12-12T15:58:00+04:00 8 лет, 2 месяца назад
Еще 1 ответ
60

Да, вы можете использовать TRAN в целях тестирования

-- Start with Transaction
BEGIN TRAN OperationStart
-- Delete Items
DELETE FROM TableName
-- Where Condition

-- Update Items
UPDATE TableName
SET Column1 = 'some values'
-- Where Condition

-- Check/See the changes
SELECT * FROM TableName
-- Where Condition

-- Rollback all test operation/changes
-- Once you confirm then, COMMIT Transaction
ROLLBACK TRAN OperationStart

ответил(а) 2011-12-12T16:00:00+04:00 8 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема