Есть ли способ установить уровень цен базы данных Azure SQL по умолчанию для Azure SQL Server - PullRequest
2 голосов
/ 30 октября 2019

При использовании инициализатора базы данных для Entity Framework 6, который создает базу данных, когда не существует ни одного соединения с SQL-сервером Azure, база данных создается с использованием модели ценообразования vCore.

В идеале это просто должен быть экземпляр DTU S0, и мне нужно найти способ указать его как таковой.

Можно ли указать тип базы данных по умолчанию на SQL-сервере Azure? Или можно добавить что-то волшебное в строку подключения, чтобы сообщить ей о типе создаваемого экземпляра базы данных?

1 Ответ

1 голос
/ 30 октября 2019

Кредит: Torsten Grabs (MSFT) @ MSDN

https://social.msdn.microsoft.com/Forums/windows/en-US/7d7b5cd8-5878-4241-a674-33336010f081/set-service-tiers-when-create-azure-sql-database-from-vs-c-entity-framework?forum=ssdsgetstarted

К сожалению, EF использует параметры по умолчанию при создании новой базы данных, а по умолчанию в Azure SQL DB -В настоящее время для создания базы данных веб-издания. Вы можете перезаписать поведение по умолчанию, создав собственный инициализатор базы данных для EF. Этот инициализатор, кроме того, что выдает оператор CREATE DATABASE - см. Следующий пример, который вы можете легко подключить к примеру учебного кода BloggingContext для тестирования, или просто замените BloggingContext на ваш DbContext.

    public class BloggingContextCustomInitializer : IDatabaseInitializer<BloggingContext>
    {
        public void InitializeDatabase(BloggingContext context)
        {
            if (!context.Database.Exists())
            {
                SqlConnectionStringBuilder connstrBldr = new SqlConnectionStringBuilder(context.Database.Connection.ConnectionString);
                connstrBldr.InitialCatalog = "master";

                using (SqlConnection conn = new SqlConnection(connstrBldr.ConnectionString))
                {
                    conn.Open();
                    SqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "CREATE DATABASE [" + context.Database.Connection.Database + "] (EDITION = 'standard')";
                    cmd.ExecuteNonQuery();
                }

                Database.SetInitializer(new CreateDatabaseIfNotExists<BloggingContext>());
                context.Database.Initialize(force: true);
            }
        }
    }

Добавьте к этому, пожалуйста,см https://www.sqlshack.com/overview-of-create-database-statement-in-azure-sql-server/

CREATE DATABASE DemoDB</p>
( EDITION = 'standard', SERVICE_OBJECTIVE = 'S0', MAXSIZE = 500 MB ) ;
...