private async Task InitializeAsync(CancellationToken cancellationToken) { var configuredConnectionBuilder = new SqlConnectionStringBuilder(_sqlServerDataStoreConfiguration.ConnectionString); string databaseName = configuredConnectionBuilder.InitialCatalog; SchemaInitializer.ValidateDatabaseName(databaseName); SqlConnectionStringBuilder connectionBuilder = new SqlConnectionStringBuilder(_sqlServerDataStoreConfiguration.ConnectionString) { InitialCatalog = string.Empty }; using (var connection = new SqlConnection(connectionBuilder.ToString())) { bool doesDatabaseExist = await SchemaInitializer.DoesDatabaseExistAsync(connection, databaseName, cancellationToken); // database creation is allowed if (!doesDatabaseExist) { Console.WriteLine("The database does not exists."); bool created = await SchemaInitializer.CreateDatabaseAsync(connection, databaseName, cancellationToken); if (created) { Console.WriteLine("The database is created."); } else { throw new SchemaManagerException(Resources.InsufficientDatabasePermissionsMessage); } connection.Close(); } } bool canInitialize = false; // now switch to the target database using (var connection = await _sqlConnectionFactory.GetSqlConnectionAsync(cancellationToken: cancellationToken)) { canInitialize = await SchemaInitializer.CheckDatabasePermissionsAsync(connection, cancellationToken); } if (!canInitialize) { throw new SchemaManagerException(Resources.InsufficientTablesPermissionsMessage); } }
private async Task InitializeAsync(CancellationToken cancellationToken) { string sqlConnectionString = await _sqlConnectionStringProvider.GetSqlConnectionString(cancellationToken); var configuredConnectionBuilder = new SqlConnectionStringBuilder(sqlConnectionString); string databaseName = configuredConnectionBuilder.InitialCatalog; SchemaInitializer.ValidateDatabaseName(databaseName); await CreateDatabaseIfNotExists(databaseName, cancellationToken); bool canInitialize = false; // now switch to the target database using (var connection = await _sqlConnectionFactory.GetSqlConnectionAsync(cancellationToken: cancellationToken)) { canInitialize = await SchemaInitializer.CheckDatabasePermissionsAsync(connection, cancellationToken); } if (!canInitialize) { throw new SchemaManagerException(Resources.InsufficientTablesPermissionsMessage); } }