2016-11-28 1 views
0

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

USE FakeDatabase 

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

заявление USE не поддерживается для переключения между базами данных

(NB Я использую SQL Server Management Studio v17.0 RC1 с базой данных v12 Azure SQL Server.)

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

+0

Вы могли бы прокомментировать ваши запросы: (Ctrl + A, Ctrl + K, Ctrl + C) и только раскомментировать ее (Ctrl + A, Ctrl + K, Ctrl + U) непосредственно перед выполнением. – stakx

+0

Я делаю это для действительно разрушительных (двойная паранойя!), Но это делает исторические запросы сложнее сканировать, поскольку вы не получаете подсветку синтаксиса для комментариев. – dumbledad

+0

Как может * запрос * (т.е. 'SELECT') когда-либо быть «разрушительным»? – stakx

ответ

1

использование не поддерживается в лазури ... вы можете попробовать ниже, но там может быть много вариантов, в зависимости от вашего случая использования

Заменить использование базы данных с помощью ниже заявления

if db_name() <>'Fakedatabase' 
return; 
+0

. Еще раз взглянув на это, я могу использовать 'RETURN' самостоятельно, так как это предотвратит выполнение любых следующих операторов. – dumbledad

1

Вы могли бы, вместо того, что-то вроде этого в каждом сценарии:

IF @@SERVERNAME <> 'Not-Really-My-Server' 
BEGIN 
    raiserror('Database Name Not Set', 20, -1) with log 
END 

-- Rest of my query... 
+0

Я получаю такие ошибки, как «Только системный администратор может указать WITH LOG для команды RAISERROR», а затем «Уровни серьезности ошибок, превышающие 18, могут быть указаны только членами роли sysadmin», которые мне нужно будет исследовать. После этих ошибок остальная часть моего запроса выполняется :-( – dumbledad

+0

К сожалению нет. Установка уровня на «1» и удаление «WITH LOG» Я получаю сообщение «Имя базы данных не задано, Msg 5000, уровень 1, состояние 1» после сообщением '(затронуто 1167 строк)' и результаты 'SELECT' – dumbledad

+0

@dumbledad Я думаю, вам нужно 18, чтобы выйти? Может быть?/shrug – TZHX

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