Как программно создать базу данных SQL Azure в эластичном пуле?

Я хочу написать код на C#, который бы программно создавал и добавлял базу данных SQL Azure в существующий эластичный пул. Я заглянул в клиентскую библиотеку Elastic Database, но она не обрабатывает создание баз данных, а только регистрирует существующие базы данных как сегменты, которые я определенно использовал бы.

Возможно ли создать базу данных с помощью чего-то простого, такого как SqlClient, или, может быть, это можно сделать с помощью Azure SQL Management SDK или какой-либо другой опции?

2 ответа

Решение

Вы можете использовать Transact SQL для создания базы данных и добавления ее в эластичный пул одним оператором. В этом примере мы создаем новую базу данных в пуле с именем S3M100:

CREATE DATABASE db1 ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = S3M100 ) ) 

Вы также можете использовать Transact-SQL, чтобы сначала создать базу данных.

CREATE DATABASE YourNewDB ( EDITION = 'GeneralPurpose' );

Это может быть копия другой базы данных.

CREATE DATABASE YourNewDB AS COPY OF OldDB;

После этого вы можете переместить его в любой эластичный бассейн.

ALTER DATABASE YourNewDB   
MODIFY ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = pool1 ) ) ;  

Пожалуйста, посмотрите этот учебник: Создайте новый пул эластичных баз данных с C#.

Это дает вам пример кода C# для создания новой базы данных в пуле:

// Create a database: configure create or update parameters and properties explicitly
DatabaseCreateOrUpdateParameters newPooledDatabaseParameters = new DatabaseCreateOrUpdateParameters()
{
    Location = currentServer.Location,
    Properties = new DatabaseCreateOrUpdateProperties()
    {
        Edition = "Standard",
        RequestedServiceObjectiveName = "ElasticPool",
        ElasticPoolName = "ElasticPool1",
        MaxSizeBytes = 268435456000, // 250 GB,
        Collation = "SQL_Latin1_General_CP1_CI_AS"
    }
};

var poolDbResponse = sqlClient.Databases.CreateOrUpdate("resourcegroup-name", "server-name", "Database2", newPooledDatabaseParameters);

Если у вас уже есть базы данных SQL Azure, вы можете ссылаться на Монитор и управлять пулом эластичных баз данных с помощью C#.

Например, переместите базу данных в эластичный пул:

// Retrieve current database properties.

currentDatabase = sqlClient.Databases.Get("resourcegroup-name", "server-name", "Database1").Database;

// Configure create or update parameters with existing property values, override those to be changed.
DatabaseCreateOrUpdateParameters updatePooledDbParameters = new DatabaseCreateOrUpdateParameters()
{
    Location = currentDatabase.Location,
    Properties = new DatabaseCreateOrUpdateProperties()
    {
        Edition = "Standard",
        RequestedServiceObjectiveName = "ElasticPool",
        ElasticPoolName = "ElasticPool1",
        MaxSizeBytes = currentDatabase.Properties.MaxSizeBytes,
        Collation = currentDatabase.Properties.Collation,
    }
};

// Update the database.
var dbUpdateResponse = sqlClient.Databases.CreateOrUpdate("resourcegroup-name", "server-name", "Database1", updatePooledDbParameters);

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

Другие вопросы по тегам