public void Bim( [Option(LongName = "connectionString", ShortName = "c")] string connectionString, [Option(LongName = "sqlType", ShortName = "t")] string sqlType, [Option(LongName = "databaseName", ShortName = "b")] string databaseName, [Option(LongName = "patternFileName", ShortName = "p")] string patternFileName) { var version = SqlEngineVersions.GetVersion(sqlType); var connString = new NamedConnectionString( version.GetType().Name, version.ProviderName, connectionString, version.VersionString); var context = CreateContext(version); var ddlReader = DataDefinitionReaderFactory.CreateDataDefinitionReader(connString, context, null); var dd = ddlReader.GetDatabaseDefinition(); var documenterContext = CreateDocumenterContext(context, patternFileName); var generator = new BimGenerator(documenterContext, version, databaseName); generator.Generate(dd); }
public void Generate( [Option(LongName = "connectionString", ShortName = "c", Description = "Provide a valid connection string to the database")] string connectionString, [Option(LongName = "singleOrMulti", ShortName = "m", Description = "multi for multi file, single for single file generation")] string singleOrMulti, [Option(LongName = "sqlType", ShortName = "t")] string sqlType, [Option(LongName = "namespace", ShortName = "n")] string @namespace, [Option(LongName = "newDatabaseName", ShortName = "b")] string newDatabaseName, [Option(LongName = "patternFileName", ShortName = "p")] string patternFileName, [Option(LongName = "flags", ShortName = "f")] List <string> flags) { var version = SqlEngineVersions.GetVersion(sqlType); var connString = new NamedConnectionString( version.GetType().Name, version.ProviderName, connectionString, version.VersionString); var context = CreateContext(version); var ddlReader = DataDefinitionReaderFactory.CreateDataDefinitionReader(connString, context, null); var dd = ddlReader.GetDatabaseDefinition(); var generatorContext = CreateGeneratorContext(context, patternFileName); if (flags != null) { SetSettingsFromFlags(flags, generatorContext.GeneratorSettings); } var writer = CSharpWriterFactory.GetCSharpWriter(version, generatorContext, newDatabaseName); var generator = new CSharpGenerator(writer, version, newDatabaseName, @namespace); if (singleOrMulti == "s" || singleOrMulti == "single") { generator.GenerateSingleFile(dd, newDatabaseName + ".cs"); } else { generator.GenerateMultiFile(dd); } }
public static IDataDefinitionReader CreateDataDefinitionReader(NamedConnectionString connectionString, Context context, SchemaNamesToRead schemaNames) { var sqlEngineVersion = connectionString.GetSqlEngineVersion(); if (sqlEngineVersion is MsSqlVersion) { return(new MsSql2016DataDefinitionReader(connectionString, context, schemaNames)); } if (sqlEngineVersion is OracleVersion) { return(new Oracle12cDataDefinitionReader(connectionString, context, schemaNames)); } throw new NotImplementedException($"Not implemented {sqlEngineVersion}."); }
public static DatabaseConnection GetNewConnection(NamedConnectionString connectionString, IProcess process, int maxRetryCount = 5, int retryDelayMilliseconds = 2000) { if (string.IsNullOrEmpty(connectionString.ProviderName)) { var ex = new EtlException(process, "missing provider name for connection string"); ex.Data["ConnectionStringName"] = connectionString.Name; ex.AddOpsMessage("missing provider name for connection string key: " + connectionString.Name); throw ex; } var iocUid = 0; var connection = _connectionManager.GetNewConnection(connectionString, maxRetryCount, retryDelayMilliseconds, onOpening: (connectionString, connection) => { iocUid = process.Context.RegisterIoCommandStart(process, IoCommandKind.dbConnection, connectionString.Name, connection.ConnectionTimeout, "open connection", Transaction.Current.ToIdentifierString(), null, "opening database connection to {ConnectionStringName} ({Provider})", connectionString.Name, connectionString.GetFriendlyProviderName()); }, onOpened: (connectionString, connection, retryCount) => { process.Context.RegisterIoCommandSuccess(process, IoCommandKind.dbConnection, iocUid, null); }, onError: (connectionString, connection, retryCount, ex) => { process.Context.RegisterIoCommandFailed(process, IoCommandKind.dbConnection, iocUid, null, ex); if (retryCount < maxRetryCount) { process.Context.Log(LogSeverity.Error, process, "can't connect to database, connection string key: {ConnectionStringName} ({Provider}), retrying in {DelayMsec} msec (#{AttemptIndex}): {ExceptionMessage}", connectionString.Name, connectionString.GetFriendlyProviderName(), retryDelayMilliseconds * (retryCount + 1), retryCount, ex.Message); process.Context.LogOps(LogSeverity.Error, process, "can't connect to database, connection string key: {ConnectionStringName} ({Provider}), retrying in {DelayMsec} msec (#{AttemptIndex}): {ExceptionMessage}", connectionString.Name, connectionString.GetFriendlyProviderName(), retryDelayMilliseconds * (retryCount + 1), retryCount, ex.Message); } else { var exception = new EtlException(process, "can't connect to database", ex); exception.AddOpsMessage(string.Format(CultureInfo.InvariantCulture, "can't connect to database, connection string key: {0}, message: {1}", connectionString.Name, ex.Message)); exception.Data.Add("ConnectionStringName", connectionString.Name); exception.Data.Add("ProviderName", connectionString.ProviderName); exception.Data.Add("NumberOfAttempts", maxRetryCount + 1); throw exception; } }); return(connection); }
public void Check( [Option(LongName = "connectionString", ShortName = "c")] string connectionString, [Option(LongName = "sqlType", ShortName = "t")] string sqlType, [Option(LongName = "patternFileName", ShortName = "p")] string patternFileName, [Option(LongName = "flags", ShortName = "f")] List <string> flags) { var version = SqlEngineVersions.GetVersion(sqlType); var connString = new NamedConnectionString( version.GetType().Name, version.ProviderName, connectionString, version.VersionString); var context = CreateContext(version); var sqlExecuter = SqlExecuterFactory.CreateSqlExecuter(connString, context); var databaseName = sqlExecuter.GetDatabase(); var ddlReader = DataDefinitionReaderFactory.CreateDataDefinitionReader(connString, context, null); var dd = ddlReader.GetDatabaseDefinition(); var documenterContext = CreateDocumenterContext(context, patternFileName); if (flags != null) { SetSettingsFromFlags(flags, documenterContext.DocumenterSettings); } var schemaCheckerDocumenter = new SchemaCheckerDocumenter(documenterContext, version, databaseName, null); schemaCheckerDocumenter.Document(dd); }
public void DropAll( [Option(LongName = "connectionString", ShortName = "c")] string connectionString, [Option(LongName = "sqlType", ShortName = "t")] string sqlType ) { var version = SqlEngineVersions.GetVersion(sqlType); var connString = new NamedConnectionString("", version.ProviderName, connectionString, version.VersionString); var context = CreateContext(version); var generator = SqlGeneratorFactory.CreateGenerator(version, context); var executer = SqlExecuterFactory.CreateSqlExecuter(connString, generator); var dc = new DatabaseCreator(null, executer); dc.DropAllViews(); dc.DropAllForeignKeys(); dc.DropAllTables(); // TODO needs databasedefinition // dc.DropAllSchemas(); }
public static ConnectionStringFields GetKnownConnectionStringFields(this NamedConnectionString connectionString) { return(SqlEngineSemanticFormatter.GetFormatter(connectionString).GetKnownConnectionStringFields(connectionString)); }
private static IEvaluable CreateSourceTableInputProcess(DwhTableBuilder builder, DateTimeOffset?maxRecordTimestamp, RelationalModel sourceModel, NamedConnectionString sourceConnectionString, AdoNetReaderConnectionScope readerScope, SourceReadSqlStatementCustomizerDelegate sqlStatementCustomizer, string customWhereClause) { var whereClauseList = new List <string>(); if (customWhereClause != null) { whereClauseList.Add(customWhereClause); } var parameterList = new Dictionary <string, object>(); sqlStatementCustomizer?.Invoke(builder, whereClauseList, parameterList); if (maxRecordTimestamp != null) { whereClauseList.Add(builder.Table.GetRecordTimestampIndicatorColumn().NameEscaped(builder.DwhBuilder.ConnectionString) + " >= @MaxRecordTimestamp"); parameterList.Add("MaxRecordTimestamp", maxRecordTimestamp.Value); } var sourceTableName = builder.Table.GetSourceTableNameOverride() ?? builder.Table.Name; var sourceSqlTable = sourceModel[builder.Table.Schema.Name] != null ? sourceModel[builder.Table.Schema.Name][sourceTableName] : sourceModel.DefaultSchema[sourceTableName]; return(new AdoNetDbReader(builder.ResilientTable.Topic, "SourceTableReader") { ConnectionString = sourceConnectionString, CustomConnectionCreator = readerScope != null ? readerScope.GetConnection : (ConnectionCreatorDelegate)null, TableName = sourceSqlTable.EscapedName(builder.DwhBuilder.ConnectionString), CustomWhereClause = whereClauseList.Count == 0 ? null : string.Join(" and ", whereClauseList), Parameters = parameterList, ColumnConfiguration = sourceSqlTable.Columns.Select(column => new ReaderColumnConfiguration(column.Name, null, /*GetConverter(column.Type.SqlTypeInfo), */ NullSourceHandler.SetSpecialValue, InvalidSourceHandler.WrapError) ).ToList(), }); }
public static void TestConnection(NamedConnectionString connectionString) { _connectionManager.TestConnection(connectionString); }
public static string EscapedName(this RelationalTable table, NamedConnectionString connectionString) { return(connectionString.Escape(table.Name, table.Schema.Name)); }
public static string NameEscaped(this RelationalColumn column, NamedConnectionString connectionString) { return(connectionString.Escape(column.Name)); }
public MsSql2016DataDefinitionReader(NamedConnectionString connectionString, Context context, SchemaNamesToRead schemaNames) : base(new MsSql2016Executer(connectionString, new MsSql2016Generator(context)), schemaNames) { }
public string CreateStatement(NamedConnectionString connectionString, List <string> rowStatements) { return("INSERT INTO " + _tableDefinition.TableName + " (" + _dbColumns + ") VALUES \n" + string.Join(",\n", rowStatements) + ";"); }