繁体   English   中英

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

[英]How to programmatically create an Azure SQL Database in an Elastic Pool?

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

是否可以通过使用诸如SqlClient之类的简单方法来创建数据库,或者可以通过使用Azure SQL Management 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数据库,则可以引用Monitor并使用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);

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM