/// <summary> /// Sets the database to be a restoration of a point in time of an existing database, using the existing database's resource ID and the point in time (ISO8601 format) to restore from. /// </summary> /// <param name="builder"></param> /// <param name="databaseId">Resource ID of the database to restore from</param> /// <param name="restorePointInTime">The point in time (ISO8601 format) of the source database</param> /// <returns></returns> public static SqlDatabaseBuilder CreateAsPointInTimeRestore(this SqlDatabaseBuilder builder, Input <string> databaseId, Input <string> restorePointInTime) { builder.Arguments.CreateMode = CreateMode.PointInTimeRestore; builder.Arguments.SourceDatabaseId = databaseId; builder.Arguments.RestorePointInTime = restorePointInTime; return(builder); }
/// <summary> /// The max size of the database expressed in bytes. /// </summary> /// <param name="builder"></param> /// <param name="size">Provide max database size in GB.</param> /// <returns></returns> public static SqlDatabaseBuilder MaxDatabaseSizeGB(this SqlDatabaseBuilder builder, Input <double> size) { var bytes = size.Apply(e => e * 1073741824); builder.Arguments.MaxSizeBytes = bytes; return(builder); }
/// <summary> /// Generates a new SQL server to host the database, using the provided admin login credentials for the server. /// Useful for when creating a geo-replica backup for a database. /// The location and resource group arguments for the new server are assumed from the database. /// </summary> /// <param name="builder"></param> /// <param name="serverName">Name for the new server</param> /// <param name="adminLogin">Administrator login for the new server</param> /// <param name="adminPassword">Administrator password for the new server</param> /// <returns></returns> public static SqlDatabaseBuilder Server(this SqlDatabaseBuilder builder, Input <string> serverName, Input <string> adminLogin, Input <string> adminPassword) { builder.NewServerArgs = new ServerArgs { ServerName = serverName, AdministratorLogin = adminLogin, AdministratorLoginPassword = adminPassword }; return(builder); }
/// <summary> /// "Sets the database to be a restoration of a geo-replicated backup database." /// https://www.pulumi.com/docs/reference/pkg/azure-native/sql/database/#createmode_csharp /// </summary> /// <param name="builder"></param> /// <param name="databaseId">Recoverable Database Resource ID of the database to restore</param> /// <returns></returns> public static SqlDatabaseBuilder CreateAsRecoveryOf(this SqlDatabaseBuilder builder, Input <string> databaseId) { /* TODO: May need improvement and needs to be properly tested! * User must pass in the recoverableDatabaseId, which is associated with a database stored in the recoverable databases of the server. * Format of recoverableDatabaseId: * 'subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Sql/servers/server-name/recoverableDatabases/recoverable-database-name' */ builder.Arguments.CreateMode = CreateMode.Recovery; builder.Arguments.RecoverableDatabaseId = databaseId; return(builder); }
/// <summary> /// Creates a database by restoring from a long term retention vault. /// recoveryServicesRecoveryPointResourceId must be specified as the recovery point resource ID. /// </summary> /// <param name="builder"></param> /// <param name="databaseId"></param> /// <returns></returns> public static SqlDatabaseBuilder CreateAsLongTermRetentionRestore(this SqlDatabaseBuilder builder, Input <string> databaseId) { /* TODO: May need improvement and needs to be properly tested! * User must pass in the recoveryServicesRecoveryPointId, which is associated with a database * stored in a long term retention vault. * Possibly able to get resource id through 'Pulumi.AzureNative.RecoveryServices' * Format of RecoveryServicesRecoveryPointId: * '/subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.RecoveryServices/vault/vault-name/backupFabrics/Azure/protectionContainers/protection-container-name/protectedItems/protected-item-name/recoveryPoints/recovery-point-Id' */ builder.Arguments.CreateMode = CreateMode.RestoreLongTermRetentionBackup; builder.Arguments.RecoveryServicesRecoveryPointId = databaseId; return(builder); }
/// <summary> /// Restores a deleted database using the database's original resource ID. /// </summary> /// <param name="builder"></param> /// <param name="databaseId">Original Resource ID of the database to restore from.</param> /// <param name="deletionDate">Deletion date of the database in (ISO 8601 format).</param> /// <param name="pointInTime">Point in time that you want to restore from (ISO 8601 format). Only specify to restore from an earlier point in time.</param> /// <returns></returns> public static SqlDatabaseBuilder CreateAsRestoreOf(this SqlDatabaseBuilder builder, Input <string> databaseId, Input <string> deletionDate, Input <string> pointInTime = null) { /* Same comments SetAsRestore() method. * This method seems redundant as you don't need to set SourceDatabaseDeletionDate to restore a deleted database - the RestorableDroppedDatabaseId will suffice. * "If sourceDatabaseId is the database’s original resource ID, then sourceDatabaseDeletionDate must be specified." - https://www.pulumi.com/docs/reference/pkg/azure-native/sql/database/#createmode_csharp * ^ documentation states to assign SourceDatabaseId with the original resource Id of the database - though, CreateMode.Restore requires RestorableDroppedDatabaseId. */ builder.Arguments.CreateMode = CreateMode.Restore; builder.Arguments.RestorableDroppedDatabaseId = databaseId; builder.Arguments.SourceDatabaseDeletionDate = deletionDate; builder.Arguments.RestorePointInTime = pointInTime ?? null; return(builder); }
/// <summary> /// Restores a deleted database using the Restorable Dropped Database Resource ID. /// </summary> /// <param name="builder"></param> /// <param name="databaseId">Resource ID of the Restorable Dropped Database to restore from</param> /// <param name="pointInTime">Point in time that you want to restore from. Only specify to restore from an earlier point in time.</param> /// <returns></returns> public static SqlDatabaseBuilder CreateAsRestoreOf(this SqlDatabaseBuilder builder, Input <string> databaseId, Input <string> pointInTime = null) { /* TODO: Improve usability of the method * "sourceDatabaseId must be the restorable dropped database resource ID and sourceDatabaseDeletionDate is ignored." - https://www.pulumi.com/docs/reference/pkg/azure-native/sql/database/#createmode_csharp * ^ documentation states to assign SourcedDatabaseId - must use RestorableDroppedDatabaseId when using CreateMode.Restore * Currently, user must pass the RestorableDroppedDatabaseId. This isn't friendly though as they would need to know the id. * More friendly for user to input a db name, server name, and rg name (and optional point in time to restore for more earlier backups) * It is possible to access a dropped (deleted) database using PS command Get-AzureRmSqlDeletedDatabaseBackup and providing parameters (resourcegroup, server, database) * There is a GetDatabase function provided by Pulumi, but it doesn't seem to be able to grab deleted databases. and there is no GetDeletedDatabase function. */ builder.Arguments.CreateMode = CreateMode.Restore; builder.Arguments.RestorableDroppedDatabaseId = databaseId; builder.Arguments.RestorePointInTime = pointInTime ?? null; return(builder); }
/// <summary> /// Database location /// </summary> /// <param name="builder"></param> /// <param name="localtion"></param> /// <returns></returns> public static SqlDatabaseBuilder Location(this SqlDatabaseBuilder builder, Input <string> localtion) { builder.Arguments.Location = localtion; return(builder); }
/// <summary> /// Sets the database to be a copy of an existing database /// </summary> /// <param name="builder"></param> /// <param name="databaseId">Resource ID of the database to copy</param> /// <returns></returns> public static SqlDatabaseBuilder CreateAsCopy(this SqlDatabaseBuilder builder, Input <string> databaseId) { builder.Arguments.CreateMode = CreateMode.Copy; builder.Arguments.SourceDatabaseId = databaseId; return(builder); }
/// <summary> /// Azure SQL resource group /// </summary> /// <param name="builder"></param> /// <param name="resourceGroup"></param> /// <returns></returns> public static SqlDatabaseBuilder ResourceGroup(this SqlDatabaseBuilder builder, Input <string> resourceGroup) { builder.Arguments.ResourceGroupName = resourceGroup; return(builder); }
/// <summary> /// Database collation defines the rules that sort and compare data, and cannot be changed after database creation. /// The default database collation is 'SQL_Latin1_General_CP1_CI_AS'. /// For more details: https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver15 /// </summary> /// <param name="builder"></param> /// <param name="collation"></param> /// <returns></returns> public static SqlDatabaseBuilder DatabaseCollation(this SqlDatabaseBuilder builder, Input <string> collation = null) { builder.Arguments.Collation = collation ?? "SQL_Latin1_General_CP1_CI_AS"; return(builder); }
/// <summary> /// Sample data to populate the database /// </summary> /// <param name="builder"></param> /// <param name="sampleData">Sample data type</param> /// <returns></returns> public static SqlDatabaseBuilder SampleData(this SqlDatabaseBuilder builder, InputUnion <string, SampleName> sampleData) { builder.Arguments.SampleName = sampleData; return(builder); }
/// <summary> /// The Sku name / service objective name for the database. Valid values depend on edition and /// location and may include `S0`, `S1`, `S2`, `S3`, `P1`, `P2`, `P4`, `P6`, `P11` /// and `ElasticPool`. You can list the available names with the cli: ```shell az /// sql db list-editions -l westus -o table ```. For further information please see /// [Azure CLI - az sql db](https://docs.microsoft.com/en-us/cli/azure/sql/db?view=azure-cli-latest#az-sql-db-list-editions). /// </summary> /// <param name="builder"></param> /// <param name="objectiveName"></param> /// <returns></returns> public static SqlDatabaseBuilder SkuServiceObjectiveName(this SqlDatabaseBuilder builder, Input <string> objectiveName) { builder.SkuArguments.Name = objectiveName; return(builder); }
/// <summary> /// The storage account type used to store backups for this database /// Default: 'Geo' /// </summary> /// <param name="builder"></param> /// <param name="saType"></param> /// <returns></returns> public static SqlDatabaseBuilder StorageAccountType(this SqlDatabaseBuilder builder, InputUnion <string, RequestedBackupStorageRedundancy> saType = null) { builder.Arguments.RequestedBackupStorageRedundancy = saType ?? "Geo"; return(builder); }
/// <summary> /// Provides enhanced availability by spreading replicas across availability zones within one region. /// Sets the Zone Redundant property to 'true'. /// </summary> /// <param name="builder"></param> /// <returns></returns> public static SqlDatabaseBuilder EnableZoneRedundancy(this SqlDatabaseBuilder builder) { builder.Arguments.ZoneRedundant = true; return(builder); }
public static SqlDatabaseBuilder SecondaryType(this SqlDatabaseBuilder builder, InputUnion <string, SecondaryType> secondaryType) { builder.Arguments.SecondaryType = secondaryType; return(builder); }
/// <summary> /// Sets the database name /// </summary> /// <param name="builder"></param> /// <param name="name"></param> /// <returns></returns> public static SqlDatabaseBuilder Name(this SqlDatabaseBuilder builder, Input <string> name) { builder.Arguments.DatabaseName = name; return(builder); }
/// <summary> /// Family of the particular SKU. /// If the service has different generations of hardware, for the same SKU, then that can be captured here. /// </summary> /// <param name="builder"></param> /// <param name="family"></param> /// <returns></returns> public static SqlDatabaseBuilder SkuFamily(this SqlDatabaseBuilder builder, Input <string> family) { builder.SkuArguments.Family = family; return(builder); }
/// <summary> /// Capacity of the particular SKU /// </summary> /// <param name="builder"></param> /// <param name="capacity"></param> /// <returns></returns> public static SqlDatabaseBuilder SkuCapacity(this SqlDatabaseBuilder builder, Input <int> capacity) { builder.SkuArguments.Capacity = capacity; return(builder); }
/// <summary> /// The edition/tier of the database to be created. Applies only if `create_mode` is `Default`. /// Valid values are: `Basic`, `Standard`, `Premium`, `DataWarehouse`, `Business`, /// `BusinessCritical`, `Free`, `GeneralPurpose`, `Hyperscale`, `Premium`, `PremiumRS`, /// `Standard`, `Stretch`, `System`, `System2`, or `Web`. Please see [Azure SQL Database /// Service Tiers](https://azure.microsoft.com/en-gb/documentation/articles/sql-database-service-tiers/). /// </summary> /// <param name="builder"></param> /// <param name="edition"></param> /// <returns></returns> public static SqlDatabaseBuilder SkuTier(this SqlDatabaseBuilder builder, Input <string> edition) { builder.SkuArguments.Tier = edition; return(builder); }
/// <summary> /// Azure SQL server on which the database should be created on /// </summary> /// <param name="builder"></param> /// <param name="serverName"></param> /// <returns></returns> public static SqlDatabaseBuilder Server(this SqlDatabaseBuilder builder, Input <string> serverName) { builder.Arguments.ServerName = serverName; return(builder); }
/// <summary> /// Sets the elastic pool id /// </summary> /// <param name="builder"></param> /// <param name="id"></param> /// <returns></returns> public static SqlDatabaseBuilder ElasticPoolId(this SqlDatabaseBuilder builder, Input <string> id) { builder.Arguments.ElasticPoolId = id; return(builder); }
/// <summary> /// Minimal capacity that database will always have allocated, if not paused /// </summary> /// <param name="builder"></param> /// <param name="capacity"></param> /// <returns></returns> public static SqlDatabaseBuilder MinCapacity(this SqlDatabaseBuilder builder, Input <double> capacity) { builder.Arguments.MinCapacity = capacity; // No idea what capacity actually is - TODO: find out what capacity is/does return(builder); }
/// <summary> /// Size of the particular SKU /// </summary> /// <param name="builder"></param> /// <param name="size"></param> /// <returns></returns> public static SqlDatabaseBuilder SkuSize(this SqlDatabaseBuilder builder, Input <string> size) { builder.SkuArguments.Size = size; return(builder); }
/// <summary> /// The state of read-only routing. If enabled, connections that have application intent set to readonly in their /// connection string may be routed to a readonly secondary replica in the same region. /// </summary> /// <param name="builder"></param> /// <returns></returns> public static SqlDatabaseBuilder ReadScale(this SqlDatabaseBuilder builder) { builder.Arguments.ReadScale = DatabaseReadScale.Enabled; return(builder); }