Проект базы данных Visual Studio и SQL Azure - PullRequest
13 голосов
/ 24 марта 2011

Я действительно борюсь с лучшим подходом к управлению базой данных SQL Azure, который основан на проекте базы данных Visual Studio 2010.Я подумал, что было бы достаточно просто использовать VSDBCMD для создания сценариев diff для обновлений, а затем просто запускать против SQL Azure в SSMS.Тем не менее я получаю страшное: «Не удалось определить целевой поставщик базы данных. Развертывание не может быть продолжено».ошибка.

Сейчас я просто предполагаю, что SQL Azure не поддерживает что-либо в VSDBCMD или наоборот, и я смотрю на другие подходы.Вот подход, который я сейчас рассматриваю:

  1. Создание сценария для моей базы данных SQL Azure из SSMS с использованием параметра ядра базы данных Azure.
  2. Создание временной локальной базы данных из сценария на шаге 1.
  3. Используйте VSDBCMD для создания моего дельта-скрипта для локальной базы данных из шага 2.
  4. Просмотр / изменение скрипта из шага 3.
  5. Запуск скрипта из шага 3/4 для SQLAzure в SSMS.

Хорошо, плохо?Любые другие идеи?

EDIT : Сегодня я обновился до Visual Studio 2010 с пакетом обновления 1 (SP1) и обнаружил, что в Microsoft.Data.Schema.Sql.dll есть новый поставщик схемы базы данных: SqlAzureDatabaseSchemaProvider.Однако я не могу определить, как на самом деле использовать этого плохого мальчика.Теперь, когда я пытаюсь использовать тот же сценарий VSDBCMD для базы данных Azure, я получаю:

Исходный поставщик схемы базы данных Sql100DatabaseSchemaProvider не может быть преобразован в поставщик SqlAzureDatabaseSchemaProvider.Развертывание не может быть продолжено.

Я также пытался использовать поставщика Sql90 с тем же результатом.Я даже вручную отредактировал файл dbproj и изменил свойство DSP на SqlAzureDatabaseSchemaProvider.При перезагрузке проекта я получаю:

Поставщик схемы базы данных должен обеспечить реализацию DataGenerationServices.

Кто-нибудь пробовал это с VS 2010 SP1?

Ответы [ 3 ]

3 голосов
/ 24 марта 2011

Вы можете использовать Мастер миграции SQL Azure и поиграть с ним. Может быть, вы можете получить сценарии и редактировать их, как вы хотите. Просто идея.

1 голос
/ 05 мая 2011

Все, что нужно: простой инструмент командной строки, который заменяет недопустимые операторы SQL Azure:

    private const string STARTPLACEHOLDER = "AZURESCRIPTSTARTPLACEHOLDER";

    public static void Do(string fileName)
    {
        // Read the original file
        StringBuilder script = new StringBuilder();
        using (StreamReader reader = new StreamReader(fileName))
        {
            script.Append(reader.ReadToEnd());
        }

        // Remove everything before the start placeholder
        int startPlaceHolder = script.ToString().IndexOf(STARTPLACEHOLDER, 0);
        if (startPlaceHolder > 0)
        {
            script.Remove(0, startPlaceHolder + STARTPLACEHOLDER.Length);
        }

        // Remove WITH clause
        script.Replace("WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF)", string.Empty);

        // Create azure compatible output file
        using (StreamWriter writer = new StreamWriter(Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + "_Azure" + Path.GetExtension(fileName))))
        {
            writer.Write(script.ToString());
        }
    }
1 голос
/ 24 марта 2011

Проверьте страницу свойств проекта базы данных.Он должен отображать раскрывающийся список, содержащий различные доступные поставщики для проекта.Если вы выберете провайдера Azure, вы сможете развернуть проект как часть вашего приложения Azure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...