public override void Process(CreateSchemaExpression expression)
        {
            var password = expression.GetAdditionalFeature(SqlAnywhereExtensions.SchemaPassword, string.Empty);

            if (string.IsNullOrEmpty(password))
            {
                throw new Exception("Create schema requires connection for the schema user. No password specified in CreateSchemaExpression.");
            }

            if (!Exists("SELECT count(*) FROM \"dbo\".\"syslogins\" WHERE \"name\"='{0}'", FormatHelper.FormatSqlEscape(expression.SchemaName)))
            {
                // Try to automatically generate the user
                Announcer.Say("Creating user {0}.", expression.SchemaName);
                Execute("CREATE USER \"{0}\" IDENTIFIED BY \"{1}\"", expression.SchemaName, password);
            }

            var    sql = Generator.Generate(expression);
            string connectionString = ReplaceUserIdAndPasswordInConnectionString(expression.SchemaName, password);

            Announcer.Say("Creating connection for user {0} to create schema.", expression.SchemaName);
            var connection = Factory.CreateConnection(connectionString);

            EnsureConnectionIsOpen(connection);
            Announcer.Say("Beginning out of scope transaction to create schema.");
            var transaction = connection.BeginTransaction();

            try
            {
                ExecuteNonQuery(connection, transaction, sql);
                transaction.Commit();
                Announcer.Say("Out of scope transaction to create schema committed.");
            }
            catch
            {
                transaction.Rollback();
                Announcer.Say("Out of scope transaction to create schema rolled back.");
                throw;
            }
            finally
            {
                transaction?.Dispose();
                connection.Dispose();
            }
        }
        public override void Process(CreateSchemaExpression expression)
        {
            Process(new CreateUserExpression(expression));

            if (SchemaExists(expression.SchemaName))
            {
                try
                {
                    Process(ExtendedGeneratorField.GenerateDefaultPrivilegesSql(expression.SchemaName));
                }
                catch
                {
                    Logger.LogSay($"Error when try to append DefaultPrivileges to schema [{expression.SchemaName}]. Probably because this is already done....");
                }
                return;
            }
            Logger.LogSay($"Creating Postgres schema '{expression.SchemaName}'...");
            Process(ExtendedGeneratorField.Generate(expression));
            Logger.LogSay($"Created Postgres schema '{expression.SchemaName}'...");
        }
        public string Generate(CreateSchemaExpression expression)
        {
            var schemaPassword = expression.SchemaName;

            if (expression.SchemaName.Equals(DbMigrationConfig.Schema,
                                             StringComparison.OrdinalIgnoreCase))
            {
                schemaPassword = DbMigrationConfig.SchemaPassword;
            }

            if (string.IsNullOrEmpty(schemaPassword))
            {
                schemaPassword = expression.SchemaName;
            }

            using (var writer = new StringWriter())
            {
                if (string.IsNullOrEmpty(DbMigrationConfig.DefaultTablespace) ||
                    string.IsNullOrEmpty(DbMigrationConfig.TempTablespace))
                {
                    writer.WriteLine(CreatePlainSchemaSqlTemplate,
                                     Quoter.QuoteSchemaName(expression.SchemaName),
                                     Quoter.QuoteSchemaName(schemaPassword));
                }
                else
                {
                    writer.WriteLine(CreateSchemaSqlTemplate,
                                     Quoter.QuoteSchemaName(expression.SchemaName),
                                     Quoter.QuoteSchemaName(schemaPassword),
                                     Quoter.QuoteSchemaName(DbMigrationConfig.DefaultTablespace),
                                     Quoter.QuoteSchemaName(DbMigrationConfig.TempTablespace));
                }
                writer.WriteLine(";");
                writer.WriteLine(GrantTableSpaceAccess(expression.SchemaName));
                writer.WriteLine(";");
                writer.WriteLine(GrantSessionAccess(expression.SchemaName));

                return(writer.ToString());
            };
        }
Esempio n. 4
0
 public override string Generate(CreateSchemaExpression expression)
 {
     return(string.Format("CREATE SCHEMA {0};", Quoter.QuoteSchemaName(expression.SchemaName)));
 }
Esempio n. 5
0
 public virtual void Process(CreateSchemaExpression expression)
 {
     Process(Generator.Generate(expression));
 }
 //All Schema method throw by default as only Sql server 2005 and up supports them.
 public override string Generate(CreateSchemaExpression expression)
 {
     throw new DatabaseOperationNotSupportedException();
 }
 public override string Generate(CreateSchemaExpression expression)
 {
     return(String.Format(CreateSchema, Quoter.QuoteSchemaName(expression.SchemaName)));
 }
Esempio n. 8
0
 public override void Process(CreateSchemaExpression expression)
 {
     truncator.Truncate(expression);
     RegisterExpression <CreateSchemaExpression>(expression);
     InternalProcess(Generator.Generate(expression));
 }
Esempio n. 9
0
 public abstract string Generate(CreateSchemaExpression expression);
Esempio n. 10
0
 //All Schema method throw by default as only Sql server 2005 and up supports them.
 public override string Generate(CreateSchemaExpression expression)
 {
     return(CompatibilityMode.HandleCompatibilty("Schemas are not supported"));
 }
 public override void Process(CreateSchemaExpression expression)
 {
     ExtendedMigrationProcessor.Process(expression);
 }
Esempio n. 12
0
 public void Truncate(CreateSchemaExpression expression)
 {
 }
Esempio n. 13
0
 public CreateUserExpression(CreateSchemaExpression expression)
 {
     SchemaName = expression.SchemaName;
 }
Esempio n. 14
0
 public override string Generate(CreateSchemaExpression expression)
 {
     throw new NotImplementedException();
 }