Я использую DBDeploy.NET для управления управлением изменениями в своей кодовой базе T-SQL. DBDeploy работает разработчиком, поддерживающим нумерованный набор сценариев изменений. Когда развертывание запускается (через NAnt), DBDeploy просматривает таблицу изменений и определяет, какие исправления необходимо выполнить, чтобы обновить экземпляр.SQL Server 2000 - Как восстановить предыдущее состояние настроек уровня соединения
Проблема с настройкой необходимых параметров, необходимых для создания индексированного представления. QUOTED_IDENTIFIER, ANSI_NULLS и ARITHABORT все должно быть включено. Да, я могу легко поместить эти инструкции SET в начало скрипта изменений, который создает/изменяет индексированное представление. Но эти настройки - это уровень соединения. Что, если позже я создаю новый экземпляр с нуля? Когда я запускаю DBDeploy в новом экземпляре, эти параметры будут пропускать все последующие сценарии изменений, так как все скрипты смены эффективно объединены в окончательный сценарий SQL, который будет выполняться в одном соединении. Хуже используются параметры синтаксического анализа типа QUOTED_IDENTIFIER, которые также будут применяться ко всем сценариям изменений. Итак:
- Я нахожусь на SQL Server 2000. Является ли моя интерпретация настроек уровня подключения правильной? То есть использование GO для разрыва скрипта в партии не делает ничего, чтобы ограничить объем этих опций SET. Как насчет более поздних версий, где параметры уровня соединения были переименованы в пакетном режиме?
- Есть ли способ распаковать SET? Насколько я понимаю, настройки уровня соединения триачны - то есть ON, OFF и по умолчанию, где по умолчанию интерпретируется на основе содержимого инструкции SQL, настроек экземпляра, настроек базы данных и постоянных пользовательских настроек. Если я устанавливаю что-то в положение ВКЛ, я не могу его отменить, просто отменив его, установив его в положение ВЫКЛ, потому что он будет маскировать значение по умолчанию, если это было раньше.
- Есть ли способ сохранить состояние настройки уровня соединения перед его настройкой, поэтому я могу вручную восстановить его после?
альтернативы сосать:
- можно обернуть каждый создать/альтер заявление для индексированных представлений в динамическом SQL - с его 4000/8000 голец ограничение на SS2K. Это очень хорошо ограничило бы объем инструкций SET.
- Я могу установить политику фиксации опций SET, которые будут использоваться на уровне проекта, и потребовать, чтобы все разработчики разместили эти параметры SET в верхней части каждого сценария изменения, чтобы обеспечить его соблюдение, поскольку пока не указывается время развертывания, сценарии изменения будут применены.
- Я могу исправить DBDeploy, чтобы всегда использовать новое соединение для каждого скрипта смены, но это потребует перепроектирования способа обработки дескрипторов изменений.
Итак, что можно сделать, и что мне делать?
Вы также можете задать этот вопрос на странице http://serverfault.com. –