создать базу данных из приложения C# с использованием Azure Sql - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь найти лучший способ создать базу данных из копии базы данных.

Приложение C# имеет регистрацию пользователя, чтобы стать пользователем веб-сайта, и как только регистрация будет одобрена, она должна просмотреть основную базу данных и создать ее прямую копию. Таким образом, для этого примера MainDB (имя основной базы данных) имеет всю схему, необходимую для создания копии для пользователя. Поэтому, когда пользователь регистрируется, он создает UserDB (имя базы данных копирования для пользователя).

Сейчас я делаю это с помощью приведенного ниже кода:

        SqlConnection cn;
        SqlCommand command;
        SqlDataReader dataReader;

            cn.Open();
            string dbName = UserDB;
            command = new SqlCommand("CREATE DATABASE " + dbName + " AS COPY OF MainDB", cn);
            command.CommandTimeout = 120;
            dataReader = command.ExecuteReader();
            cn.Close();

Это работает, но это настолько непредсказуемо, сколько времени потребуется для заполнения в azure, что я не могу определить разумное количество времени ожидания до истечения времени ожидания и выдачи ошибки при создании пользователя для новой базы данных.

Мне было интересно, есть ли более быстрый способ сделать это для C# приложения. Возможно импортировать файл базы данных bacpa c в фабрику данных Azure и создать базу данных оттуда? Но я не смог найти пример этого для запуска кода с использованием приложения C#. Я только что прочитал, что он читает быстрее, не уверен, если правда.

Любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Насколько актуальным должен быть UserDB? Я спрашиваю, потому что, если производительность настолько непредсказуема, и немедленное реагирование очень важно, вы должны заранее запустить ее в фоновом режиме, чтобы у вас была свежая БД, которую можно использовать в режиме ожидания.

Также это схема И данные? Потому что, если это просто схема, то копирование всей базы данных выглядит излишним.

Насколько велика база данных сейчас? Файлы Bacpa c хорошо работают для небольших баз данных, но как только вы окажетесь в диапазоне нескольких сотен ГБ, удачи

Рад заглянуть в эту

0 голосов
/ 25 апреля 2020

Если я понял проблему после просмотра кода, вы создаете USERDB и хотите получить схему и данные в USERDB из MASTERDB.

Что ж, вы можете использовать bacpa c файл BACPA c файл представляет собой просто ZIP-файл с данными для каждой схемы. На вашем месте я мог бы скопировать файлы в большой двоичный объект и позволить ADF скопировать данные в USERDB. Преимущество этого способа заключается в том, что мы можем реализовать параллелизм в операции копирования, и USERDB будет готов раньше.

...