В настоящее время я использую osql с nant, вызывая командный файл с аргументами. Вот свойства, которые определены в моем скрипте nant (нет, не реальные значения имени пользователя / пароля):
<property name="project.config" value="debug" />
<property name="server" value="(local)" />
<property name="database" value="Test" />
<property name="username" value="sa" />
<property name="password" value="password" />
Затем я создаю соединение osql на основе имени пользователя / пароля:
<if test="${username==''}">
<property name="osql.connection" value="-E" />
</if>
<if test="${username!=''}">
<property name="osql.connection" value="-U ${username} -P ${password}" />
</if>
Затем я передаю эти значения в мой командный файл:
<exec program="setup.bat">
<arg value="${server}"/>
<arg value="${database}" />
<arg value="${osql.connection}" />
</exec>
Файл setup.bat использует osql для удаления базы данных:
osql -S %1 -d master %3 -Q "IF EXISTS (SELECT * FROM sysdatabases WHERE name = N'%2') DROP DATABASE [%2]"
Это работает нормально, если я не передаю имя пользователя / пароль в скрипт nant и вместо этого использую встроенную защиту ("-E" для osql) Если я укажу имя пользователя / пароль, то скрипт nant просто остановится (как будто он ожидает ввода). Я знаю, что указываю правильное имя пользователя / пароль, поскольку могу войти в диспетчер подключений SQL и удалить базу данных.
Пожалуйста, дайте мне знать, если есть какие-либо предложения о том, что попробовать или альтернативные способы сделать это.