Обновите схему базы данных при развертывании в экземпляре Windows Azure

У меня есть веб-приложение, размещенное на экземпляре Windows Azure. У нас есть тестовая и живая облачная служба, тестовая служба имеет 1 экземпляр, а живая служба имеет 3 экземпляра.

Тестовое приложение развертывается автоматически каждую ночь с помощью сборок TFS и развертывается в Windows Azure с помощью сценариев Power Shell.

Проблема в том, что у нас есть старые школьные sql-скрипты для схемы базы данных и изменения данных (при необходимости). В настоящее время нам нужно войти в базу данных azure sql вручную (SMSS) и запустить скрипт.

Я хотел бы автоматизировать сценарий sql для каждой сборки, которая запускается каждую ночь через машину сборки TFS с использованием сценария powershell. Как я могу это сделать ?

Сценарий SQL можно запускать повторно, поэтому не стоит беспокоиться, если он запускает один и тот же сценарий каждый день, поскольку это не создаст никаких проблем в тестовом приложении.


person user1754675    schedule 19.02.2013    source источник


Ответы (2)


Возможно, я ошибаюсь, но я вижу это очень просто. Почему бы вам не вызвать утилиту «sqlcmd.exe» из ваших сценариев PowerShell, передав файлы сценариев SQL в качестве параметров?

Обязательно используйте sqlcmd.exe, поставляемый с SQL Server 2008 R2 или более поздней версии, чтобы правильно работать с SQL Azure.

person David Rodriguez    schedule 20.02.2013
comment
Привет Дэвид Спасибо за ваш ответ. Когда облачный проект Azure развертывается на экземпляре Azure, по умолчанию на компьютере не устанавливается служебная программа sqlcmd.exe. У меня есть удаленный рабочий стол для экземпляра, и я попытался выполнить sqlcmd в командной строке, но безуспешно. Нужно ли включать в проект установку клиентских инструментов sql server 2008 R2? Пожалуйста, порекомендуйте? - person user1754675; 21.02.2013
comment
Да, вы можете включить sqlcmd.exe (и зависимости) в свою роль, а затем вызвать его из задачи запуска .cmd. Я делал это в прошлом в некоторых проектах, но... судя по вашему описанию, вам нужно запускать эти сценарии с машины сборки TFS, а не из роли. Является ли ваша машина сборки TFS ролью виртуальной машины, работающей в Azure? - person David Rodriguez; 25.02.2013

Я хотел бы понять, как был развернут пакет SQL.

Похоже, у вас есть скрипт, который нужно запускать каждый раз после развертывания базы данных. Это можно сделать с помощью PowerShell (ExecuteNonQquery), точно так же, как это можно сделать для локального SQL Server.

Для одного запроса:

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$sqlQuery = "Your Query here"
$SqlConnection.ConnectionString = "Database Conncetion String"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $sqlQuery
$SqlCmd.CommandTimeout = 300
$SqlCmd.Connection = $SqlConnection
$sqlConnection.Open()
$result = $sqlCmd.ExecuteNonQuery()
$sqlConnection.Close()

Имейте свой запрос и строку подключения на месте

Для сценария SQL: вы можете обратиться к вопросу здесь

Надеюсь это поможет

person Pradebban Raja    schedule 29.06.2015