Skip to main content

Operations: Server: How to Create a Database

Create a new database on a server.

Syntax

public CreateDatabaseOperation(
DatabaseRecord databaseRecord,
int replicationFactor = 1)
{
}
ParametersTypeDescription
databaseRecordDatabaseRecordinstance of DatabaseRecord containing database configuration
replicationFactorintindicates how many nodes should contain the database

DatabaseRecord

DatabaseRecord is a collection of database configurations.

Constructor

NameDescription
DatabaseRecord(string databaseName)Initialize a new database record.

Properties

NameTypeDescription
Disabledbool (default: false)Disable the database.
Encryptedbool (default: false)Enables database encryption.
DeletionInProgressDictionary<string, DeletionInProgress>Mark the deletion of the database from specific nodes.
TopologyDatabaseTopologyBy default it is null and the server will decided on which nodes to place the database according to the Replication Factor.
ConflictSolverConfigConflictSolverSpecify the strategy to resolve Conflicts.
IndexesDictionary<string, IndexDefinition>Define Indexes
AutoIndexesDictionary<string, AutoIndexDefinition>Define Auto Indexes
SettingsDictionary<string, string>Provide Configuration settings.
RevisionsRevisionsConfigurationSet Revision configuration.
ExpirationExpirationConfigurationSet Expiration configuration.
RavenConnectionStringsDictionary<string, RavenConnectionString>Add Raven Connection String
SqlConnectionStringsDictionary<string, SqlConnectionString>Add SQL Connection String
PeriodicBackupsList<PeriodicBackupConfiguration>Add Backup tasks.
ExternalReplicationsList<ExternalReplications>Add External Replication tasks.
RavenEtlsList<RavenEtlConfiguration>Add Raven ETL tasks.
SqlEtlsList<SqlEtlConfiguration>Add SQL ETL tasks.
ClientClientConfigurationSet Client Configuration

Remarks

If Topology is specified, the replicationFactor will be ignored.

Example

store.Maintenance.Server.Send(new CreateDatabaseOperation(new DatabaseRecord("MyNewDatabase")));

To ensure database exists before creating it we can use the following example

Example - EnsureDatabaseExists

public void EnsureDatabaseExists(IDocumentStore store, string database = null, bool createDatabaseIfNotExists = true)
{
database = database ?? store.Database;

if (string.IsNullOrWhiteSpace(database))
throw new ArgumentException("Value cannot be null or whitespace.", nameof(database));

try
{
store.Maintenance.ForDatabase(database).Send(new GetStatisticsOperation());
}
catch (DatabaseDoesNotExistException)
{
if (createDatabaseIfNotExists == false)
throw;

try
{
store.Maintenance.Server.Send(new CreateDatabaseOperation(new DatabaseRecord(database)));
}
catch (ConcurrencyException)
{
// The database was already created before calling CreateDatabaseOperation
}

}
}

Creation of a database requires admin certificate