2010-11-15 2 views
1

Я читал статью на днях, когда показывал, как запускать SQL Update, Insert или Deletes в качестве сценария типа whatif. Я не помню параметр, о котором они говорили, и теперь я не могу найти статью. Не уверен, мечтал ли я.SQL - обновление, удаление, вставка - Whatif scenerio

В любом случае, знает ли кто-нибудь, есть ли параметр в SQL2008, который позволяет вам попробовать вставить, обновить или удалить, не совершив его вообще? Он фактически зарегистрирует или покажет вам, что он будет обновлять. Вы удаляете параметр и запускаете его, если он ведет себя так, как вы ожидали.

+0

Вы уверены, что речь идет не о конкретном инструменте? –

+0

Нет, я не уверен. Также не уверен, что я мечтал. Тем более, что я не могу найти статью. Клянусь, я смотрел видео, которое показывало добавление параметра, а затем просмотр результатов. Благодарю. – Iceman

+0

Во-первых, это принадлежит SO или SF. Во-вторых, вы имеете в виду «транзакцию», которая возвращается? – Bobby

ответ

2

ОК, наконец, понял. Я смутил это другим проектом, над которым я работал с PowerShell. В PowerShell есть параметр «whatif», который можно использовать, чтобы показать вам, какие файлы будут удалены до их удаления.

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

0

Возможно, вы имеете в виду SET NOEXEC ON?

Когда SET поехес включена, SQL Server компилирует каждую партию Transact-SQL отчетности, но не выполняет их. Когда SET NOEXEC выключен, все партии выполняются после компиляции.

Обратите внимание, что это не будет предупреждать/указывать на такие вещи, как нарушения ключа.

+0

Нет, я уверен, что это не так. Я немного что-то помню, но недостаточно деталей. Опять же, я надеюсь, что я не буду тратить время людей. – Iceman

1

Я считаю, что вы говорите о BEGIN TRANSACTION

BEGIN TRANSACTION начинает локальную транзакцию для связи, выдавшего заявление. В зависимости от текущих уровней уровня изоляции транзакции многие ресурсы, полученные для поддержки операторов Transact-SQL, выпущенных соединением, блокируются транзакцией до тех пор, пока она не будет завершена операцией COMMIT TRANSACTION или ROLLBACK TRANSACTION. Транзакции, остающиеся невыполненными в течение длительных периодов времени, могут препятствовать доступу других пользователей к этим заблокированным ресурсам, а также могут препятствовать обрыву журнала.

+0

Спасибо, но я знаю, если бы не начать транзакцию. Я использовал это много раз. Я думал, что это новая функция, может быть, 2008R2. – Iceman

+0

Спасибо за помощь. Как я узнаю, что он был перемещен? – Iceman

2

Я не знаю о SQL2008 конкретной функции с любой службой SQL, который поддерживает транзакцию, то вы можете сделать это:

  1. запускает транзакцию («BEGIN TRANSACTION» в TSQL)
  2. Остальных вашего кода INSERT/UPDATE/DELETE/любого кода
  3. (необязательно) Некоторые дополнительные операторы SELECT и, если необходимо, для вывода результата вышеуказанных действий, если вывод по умолчанию из шага 2 (такие вещи, как «X-строки затронуты»,) недостаточно
  4. Откат транзакции ("ROLLBACK TRANSACTION" в TSQL)
  5. (необязательно) Повторите код тестирования, чтобы показать, как вещи без кода в шаге 2 пробежав

Например:

BEGIN TRANSACTION 
-- make changes 
DELETE people WHERE name LIKE 'X%' 
DELETE people WHERE name LIKE 'D%' 
EXEC some_proc_that_does_more_work 
-- check the DB state after the changes 
SELECT COUNT(*) FROM people 
-- undo 
ROLLBACK TRANSACTION 
-- confirm the DB state without the changes 
SELECT COUNT(*) FROM people 

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

Если вы используете что-то вроде этого, а не то, что специфицирует SQL2008, этот метод должен быть передан другим RDBS (просто при необходимости обновите синтаксис).

+0

Спасибо, Дэвид. Я знаком с процессом транзакций. Я надеюсь найти то, что, как я думал, я читал. Надеюсь, я не трачу время на людей. Я потратил некоторое время, пытаясь найти его снова, но не повезло. Благодарю. – Iceman

0

Toad for SQL Server имеет функцию «Validate SQL», которая проверяет запросы на неправильные имена таблиц и столбцов и т. Д., Возможно, вы говорите о какой-то новой функции в SSMS 2008, подобной этой ...

+0

Нет, это не так. Я начинаю думать, что сошел с ума. Надеясь, что кто-то знает, что я имею в виду, или я просто должен проверить себя. – Iceman

Смежные вопросы