从VS C#创建Azure SQL数据库时设置服务层
本文关键字:设置 服务 数据库 SQL VS 创建 Azure | 更新日期: 2023-09-27 18:30:05
在C#中从Visual Studio创建新数据库时,是否可以设置Microsoft Azure SQL数据库服务层?目前,我可以连接到Azure SQL服务器并创建表,但由于某种原因(可能是Microsoft Default),数据库将在Web中创建,Web是将要退役的服务层。我想根据需要将默认服务级别设置为"基本"、"标准"或"高级"。
到目前为止,我发现当我调用这个方法Database.Initialize(true)<--EFhttp://msdn.microsoft.com/en-us/library/system.data.entity.database.initialize(v=vs.113).aspx它将创建数据库并将其设置为Web服务层。
使用Azure SQL v12,您可以选择指定SKU。示例:
var dbCreationCmd = $"CREATE DATABASE [{databaseName}] (MAXSIZE={maxSize}," +
$"EDITION='{edition}'," +
$"SERVICE_OBJECTIVE='{serviceObjective}')";
// With Azure SQL db V12, database creation TSQL became a sync process.
// So we need a 10 minutes command timeout
ExecuteNonQuery(connectionString, dbCreationCmd, commandTimeout: 600);
正如Simon所提到的,SQL数据层只能在配置DB之后才能完成。
在Powershell中,有一个函数可以称为数据库的后配置
Function Update-DatabaseServiceTier
{
Param
(
[Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=0)][ValidateNotNullOrEmpty()]
[String]$databasename,
[Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=1)][ValidateNotNullOrEmpty()]
[String]$PerformanceLevel,
[Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=2)][ValidateNotNullOrEmpty()]
[String]$Edition,
[Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=3)][ValidateNotNullOrEmpty()]
[String]$MaxSize,
[Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=4)][ValidateNotNullOrEmpty()]
[String]$SQLServerName,
[Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=5)][ValidateNotNullOrEmpty()]
[String]$userId,
[Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=6)][ValidateNotNullOrEmpty()]
[String]$password
)
# Get current Database Details
$DatabaseDetails = Get-AzureSqlDatabase -ServerName $SQLServerName -DatabaseName $databasename -ErrorAction Stop -WarningAction SilentlyContinue
$currentEdition = $DatabaseDetails.Edition
$currentSize = $DatabaseDetails.MaxSizeGB
if (($currentEdition -ne $Edition) -or ($currentSize -ne $MaxSize))
{
Write-Verbose " Upgrading the Database Edition - Database Size"
# Set SQL Server Connection Context
$server = Get-AzureSqlDatabaseServer $SQLServerName -ErrorAction Stop -WarningAction SilentlyContinue
$servercredential = New-object System.Management.Automation.PSCredential($userId, ($password | ConvertTo-SecureString -asPlainText -Force))
$ctx = $server | New-AzureSqlDatabaseServerContext -Credential $serverCredential
$db = Get-AzureSqlDatabase $ctx –DatabaseName $databasename -ErrorAction Stop -WarningAction SilentlyContinue
$PL = Get-AzureSqlDatabaseServiceObjective -Context $ctx -ServiceObjectiveName $PerformanceLevel -ErrorAction Stop -WarningAction SilentlyContinue
# Update SQL Server Properties (Service Objective, Edition and Size)
Set-AzureSqlDatabase -ConnectionContext $ctx –Database $db -ServiceObjective $PL -Edition $Edition -MaxSizeGB $MaxSize -Force -ErrorAction Stop -WarningAction SilentlyContinue
}
else
{
Write-Verbose ""
Write-Verbose " Database Edition and Size upto date!!"
}
}