Проект базы данных Visual Studio и SQL Azure

162
19

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


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


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

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


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


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



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


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



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

спросил(а) 2021-01-19T13:47:35+03:00 2 месяца, 3 недели назад
1
Решение
87

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

ответил(а) 2021-01-19T13:47:35+03:00 2 месяца, 3 недели назад
62

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

ответил(а) 2021-01-19T13:47:35+03:00 2 месяца, 3 недели назад
62

Необходим простой инструмент командной строки, который заменяет неверные операторы 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());
}
}

ответил(а) 2021-01-19T13:47:35+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема