Иногда приходится работать одновременно с несколькими базами данных или даже инстансами. Возникает ситуация когда у вас открыто большое количество скриптов, причём название базы данных к которой подключен тот или иной скрипт бывает трудно увидеть и можно, по ошибке запустить скрипт в контексте не той БД которой хотелось.
Например, для того чтобы предотвратить запуск кода на неправильном инстансе можно воспользоваться глобальной переменной @@SERVERNAME
IF @@SERVERNAME = 'ProdSQL'
BEGIN
'*** код запустится только на нужном инстансе ***'
RETURN
END
Для того чтобы убедиться что скрипт запускается в правельной БД можно использовать в начале скрипта строчку USE DATABASE_NAME, но есть и другой способ - использовать функцию DB_NAME().
IF DB_NAME() = 'Master'
BEGIN
PRINT 'код запустится в нужной БД'
RETURN
END
Применение USE DATABASE_NAME можно считать более предпочтительным потому что позволяет не только предотвратить запуск в неправельной БД, но и совершить переход в нужную.
Можно пойти дальше и запретить запуск части кода T-SQL в нежелательные моменты времени. Напимер этот код не будет запускаться в выходные.
IF DATEPART(dw,GETDATE()) = 1 OR DATEPART(dw,GETDATE()) = 7
BEGIN
PRINT 'код запустится только в рабочие дни недели'
RETURN
END
Описанные выше приёмы кажуться немного параноидальными, однако могут съэкономить время, предотвратив необходимость удаления ошибочно появившихся записей или восстановления из резервной копии в случае случайного удаления данных.
Ссылки:
Комментариев нет:
Отправить комментарий