/// <summary> /// Gets an empty database on the test server of the appropriate DBMS /// </summary> /// <param name="type">The DBMS you want a server of (a valid connection string must exist in TestDatabases.txt)</param> /// <param name="dbnName">null for default test database name (recommended unless you are testing moving data from one database to another on the same test server)</param> /// <param name="server"></param> /// <param name="database"></param> /// <param name="justDropTablesIfPossible">Determines behaviour when the test database already exists. False to drop and recreate it. True to just drop tables (faster)</param> /// <returns></returns> protected DiscoveredDatabase GetCleanedServer(DatabaseType type, string dbnName, out DiscoveredServer server, out DiscoveredDatabase database, bool justDropTablesIfPossible = false) { switch (type) { case DatabaseType.MicrosoftSQLServer: server = new DiscoveredServer(DiscoveredServerICanCreateRandomDatabasesAndTablesOn.Builder); break; case DatabaseType.MySql: server = _discoveredMySqlServer == null ? null : new DiscoveredServer(_discoveredMySqlServer.Builder); break; case DatabaseType.Oracle: server = _discoveredOracleServer == null ? null : new DiscoveredServer(_discoveredOracleServer.Builder); break; default: throw new ArgumentOutOfRangeException("type"); } if (server == null) { Assert.Inconclusive(); } //the microsoft one should exist! others are optional if (!server.Exists() && type != DatabaseType.MicrosoftSQLServer) { Assert.Inconclusive(); } server.TestConnection(); database = server.ExpectDatabase(dbnName); if (justDropTablesIfPossible && database.Exists()) { foreach (var t in database.DiscoverTables(true)) { t.Drop(); } foreach (var t in database.DiscoverTableValuedFunctions()) { t.Drop(); } } else { database.Create(true); } server.ChangeDatabase(dbnName); Assert.IsTrue(database.Exists()); return(database); }
public DatabaseDestination(IsIdentifiableAbstractOptions options, string reportName) : base(options) { var targetDatabase = new DiscoveredServer(options.DestinationConnectionString, options.DestinationDatabaseType).GetCurrentDatabase(); if (!targetDatabase.Exists()) { throw new Exception("Destination database did not exist"); } _tbl = targetDatabase.ExpectTable(reportName); if (_tbl.Exists()) { _tbl.Drop(); } _reportName = reportName; }
private SqlConnectionStringBuilder Create(string databaseName, IPatcher patcher, PlatformDatabaseCreationOptions options) { SqlConnection.ClearAllPools(); var builder = options.GetBuilder(databaseName); DiscoveredDatabase db = new DiscoveredServer(builder).ExpectDatabase(builder.InitialCatalog); if (options.DropDatabases && db.Exists()) { Console.WriteLine("Dropping Database:" + builder.InitialCatalog); db.Drop(); } MasterDatabaseScriptExecutor executor = new MasterDatabaseScriptExecutor(db); executor.BinaryCollation = options.BinaryCollation; executor.CreateAndPatchDatabase(patcher, new AcceptAllCheckNotifier()); Console.WriteLine("Created " + builder.InitialCatalog + " on server " + builder.DataSource); return(builder); }