示例#1
0
        public static string GetMetaDatabase(string tenant)
        {
            if (string.IsNullOrWhiteSpace(tenant))
            {
                return(string.Empty);
            }

            string provider = GetProviderName(tenant);
            string meta     = string.Empty;

            if (provider.ToUpperInvariant().Equals("NPGSQL"))
            {
                var config = PostgreSQLConfig.Get();
                meta = config.MetaDatabase;

                if (string.IsNullOrWhiteSpace(meta))
                {
                    meta = "postgres";
                }
            }

            if (provider.ToUpperInvariant().Equals("SYSTEM.DATA.SQLCLIENT"))
            {
                var config = SqlServerConfig.Get();
                meta = config.MetaDatabase;

                if (string.IsNullOrWhiteSpace(meta))
                {
                    meta = "master";
                }
            }

            return(meta);
        }
示例#2
0
        public DbServer(string tenant)
        {
            this.Tenant = tenant;

            string provider = DbProvider.GetProviderName(tenant);

            if (provider.ToUpperInvariant().Equals("NPGSQL"))
            {
                var config = PostgreSQLConfig.Get();

                this.ProviderName            = provider;
                this.BinDirectory            = config.PostgreSQLBinDirectory;
                this.DatabaseBackupDirectory = config.DatabaseBackupDirectory;
                this.HostName   = config.Server;
                this.PortNumber = config.Port ?? 5432;
                this.UserId     = config.UserId;
                this.Password   = config.Password;
            }

            if (provider.ToUpperInvariant().Equals("SYSTEM.DATA.SQLCLIENT"))
            {
                var config = SqlServerConfig.Get();

                this.ProviderName            = provider;
                this.DatabaseBackupDirectory = config.DatabaseBackupDirectory;
                this.HostName   = config.Server;
                this.PortNumber = config.Port ?? 0;
                this.UserId     = config.UserId;
                this.Password   = config.Password;
            }


            this.Validate();
        }
示例#3
0
        public string GetSuperUserConnectionString(string tenant, string database = "")
        {
            var config = SqlServerConfig.Get();

            string dataSource = config.Server;

            if (config.Port > 0)
            {
                dataSource += ", " + config.Port;
            }

            var builder = new SqlConnectionStringBuilder
            {
                DataSource      = dataSource,
                InitialCatalog  = database,
                Pooling         = config.EnablePooling ?? true,
                MinPoolSize     = config.MinPoolSize ?? 1,
                MaxPoolSize     = config.MaxPoolSize ?? 100,
                ApplicationName = "Frapid",
                NetworkLibrary  = config.NetworkLibrary,
                ConnectTimeout  = config.Timeout ?? 120
            };

            if (config.TrustedSuperUserConnection.To(false))
            {
                builder.IntegratedSecurity = true;
            }
            else
            {
                builder.UserID   = config.SuperUserId;
                builder.Password = config.SuperUserPassword;
            }

            return(builder.ConnectionString);
        }
示例#4
0
        public string GetConnectionString(string tenant, string database = "", string userId = "", string password = "")
        {
            var config = SqlServerConfig.Get();

            if (string.IsNullOrWhiteSpace(userId))
            {
                userId = config.UserId;
            }

            if (string.IsNullOrWhiteSpace(password))
            {
                password = config.Password;
            }


            return(this.GetConnectionString(tenant, config.Server, database, userId, password, config.Port ?? 0, config.EnablePooling ?? true, config.MinPoolSize ?? 1, config.MaxPoolSize ?? 100, config.NetworkLibrary));
        }
        internal static string Test(SqlServerConfig config)
        {
            var builder = new SqlConnectionStringBuilder
            {
                DataSource     = config.Server,
                NetworkLibrary = config.NetworkLibrary,
                Pooling        = config.EnablePooling,
                MinPoolSize    = config.MinPoolSize,
                MaxPoolSize    = config.MaxPoolSize
            };

            if (config.TrustedSuperUserConnection)
            {
                builder.IntegratedSecurity = true;
            }
            else
            {
                builder.UserID   = config.SuperUserId;
                builder.Password = config.SuperUserPassword;
            }


            using (var connection = new SqlConnection(builder.ConnectionString))
            {
                using (var command = new SqlCommand("SELECT 1;", connection))
                {
                    try
                    {
                        connection.Open();
                        command.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        return("Error: " + ex.Message);
                    }
                }
            }

            return("Connection to SQL Server was successful.");
        }
示例#6
0
        public SqlServerFixture()
        {
            var config = new ConfigurationBuilder()
                         .AddEnvironmentVariables()
                         .Build();

            SqlServerConfig = SqlServerConfigReader.Read(config);

            var genericScriptsReader   = new GenericSqlScriptsReader(new GenericScriptTemplateReader());
            var databaseDeleterFactory = new DatabaseDeleterFactory(SqlServerConfig.GetConnectionStringForMasterDatabase(), genericScriptsReader);
            var systemClock            = new RealSystemClock();

            _dbSynchronizer = new DatabaseSynchronizer(
                new OutdatedDatabaseCleaner(
                    new OutdatedDatabaseFinder(
                        SqlServerConfig.GetConnectionStringForMasterDatabase(),
                        SqlServerConfig.DatabaseNameTemplate,
                        systemClock),
                    databaseDeleterFactory),
                new EmptyDatabaseCreator(
                    SqlServerConfig.GetConnectionStringForMasterDatabase(),
                    SqlServerConfig.GetUniqueDatabaseName(),
                    genericScriptsReader),
                new DatabaseSchemaApplier(
                    SqlServerConfig.GetConnectionStringForTestDatabase(),
                    new DatabaseScriptsReader()),
                databaseDeleterFactory.CreateForDb(SqlServerConfig.GetUniqueDatabaseName()));

            try {
                _dbSynchronizer.CleanOutdatedDatabases();
                _dbSynchronizer.DeleteTestDatabase();
                _dbSynchronizer.CreateDatabaseForTests();
            }
            catch (Exception) {
                _dbSynchronizer.DeleteTestDatabase();
                throw;
            }
        }
        //private readonly SQLConfigSingleton _singletonSqlConfig;
        #endregion atribute

        #region Constructor

        public SqlServerDatabase(SqlServerConfig serverConfig)
        {
            ConnectionString = serverConfig.ConnectionString;
            ConnectDbTimeOut = Convert.ToInt32(serverConfig.Timeout);
        }
示例#8
0
 public SqlProviderInitialiser(SqlServerConfig config) : base(config.ConnectionString)
 {
     _config = config;
 }
示例#9
0
        public string GetMetaConnectionString(string tenant)
        {
            var config = SqlServerConfig.Get();

            return(this.GetConnectionString(tenant, config.MetaDatabase));
        }
示例#10
0
        public string GetReportUserConnectionString(string tenant, string database = "")
        {
            var config = SqlServerConfig.Get();

            return(this.GetConnectionString(tenant, database, config.ReportUserId, config.ReportUserPassword));
        }