private async Task Initialize()
        {
            if (!_instance.IsRunning)
            {
                _manager.Start();
            }

            using (var connection = _instance.CreateConnection())
            {
                await connection.OpenAsync();

                var tempPath       = Environment.GetEnvironmentVariable("Temp");
                var createDatabase = $"CREATE DATABASE [{_databaseName}] on (name='{_databaseName}', "
                                     + $"filename='{tempPath}\\{_databaseName}.mdf')";
                using (var command = new SqlCommand(createDatabase, connection))
                {
                    await command.ExecuteNonQueryAsync();
                }
            }

            var sqlConnectionStringBuilder = _instance.CreateConnectionStringBuilder();

            sqlConnectionStringBuilder.InitialCatalog = _databaseName;
            ConnectionString = sqlConnectionStringBuilder.ToString();
            var settings = new MsSqlStreamStoreV3Settings(ConnectionString);

            _msSqlStreamStoreV3 = new MsSqlStreamStoreV3(settings);
            await _msSqlStreamStoreV3.CreateSchema();
        }
        private static async Task <IStreamStore> CreateMssqlStreamStore(
            string connectionString,
            string schema,
            CancellationToken cancellationToken)
        {
            var connectionStringBuilder = new SqlConnectionStringBuilder(connectionString);

            using (var connection = new SqlConnection(new SqlConnectionStringBuilder(connectionString)
            {
                InitialCatalog = "master"
            }.ConnectionString))
            {
                await connection.OpenAsync(cancellationToken).NotOnCapturedContext();

                using (var command = new SqlCommand(
                           $@"
IF  NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'{connectionStringBuilder.InitialCatalog}')
BEGIN
    CREATE DATABASE [{connectionStringBuilder.InitialCatalog}]
END;
",
                           connection))
                {
                    await command.ExecuteNonQueryAsync(cancellationToken).NotOnCapturedContext();
                }
            }

            var settings = new MsSqlStreamStoreV3Settings(connectionString);

            if (schema != null)
            {
                settings.Schema = schema;
            }

            var streamStore = new MsSqlStreamStoreV3(settings);

            await streamStore.CreateSchema(cancellationToken);

            return(streamStore);
        }