如何以编程方式在弹性池中创建 Azure SQL 数据库?



我想用 C# 编写代码,以编程方式创建 Azure SQL 数据库并将其添加到现有弹性池中。 我已经研究了弹性数据库客户端库,但它不处理数据库的创建,只将现有数据库注册为分片,我肯定会使用它。

是否可以使用简单的东西(如 SqlClient(创建数据库,或者可以使用 Azure SQL 管理 SDK 或其他选项来完成此操作?

可以使用 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);

如果已有 Azure SQL 数据库,可以参考 使用 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);

希望这有帮助。

最新更新