Exemple #1
0
        /// <summary>
        /// Handles a create database request
        /// </summary>
        internal static async Task HandleCreateDatabaseRequest(
            CreateDatabaseParams databaseParams,
            RequestContext <CreateDatabaseResponse> requestContext)
        {
            var            response = new DefaultDatabaseInfoResponse();
            ConnectionInfo connInfo;

            AdminService.ConnectionServiceInstance.TryFindConnection(
                databaseParams.OwnerUri,
                out connInfo);

            if (taskHelper == null)
            {
                taskHelper = CreateDatabaseTaskHelper(connInfo);
            }

            DatabasePrototype prototype = taskHelper.Prototype;

            DatabaseTaskHelper.ApplyToPrototype(databaseParams.DatabaseInfo, taskHelper.Prototype);

            Database db = prototype.ApplyChanges();

            if (db != null)
            {
                taskHelper = null;
            }

            await requestContext.SendResult(new CreateDatabaseResponse()
            {
                Result = true,
                TaskId = 0
            });
        }
        /// <summary>
        /// Handles a create database request
        /// </summary>
        internal static async Task HandleCreateDatabaseRequest(
            CreateDatabaseParams databaseParams,
            RequestContext <CreateDatabaseResponse> requestContext)
        {
            try
            {
                var            response = new DefaultDatabaseInfoResponse();
                ConnectionInfo connInfo;
                AdminService.ConnectionServiceInstance.TryFindConnection(
                    databaseParams.OwnerUri,
                    out connInfo);

                using (var taskHelper = CreateDatabaseTaskHelper(connInfo))
                {
                    DatabasePrototype prototype = taskHelper.Prototype;
                    DatabaseTaskHelper.ApplyToPrototype(databaseParams.DatabaseInfo, taskHelper.Prototype);

                    Database db = prototype.ApplyChanges();

                    await requestContext.SendResult(new CreateDatabaseResponse()
                    {
                        Result = true,
                        TaskId = 0
                    });
                }
            }
            catch (Exception ex)
            {
                await requestContext.SendError(ex.ToString());
            }
        }
Exemple #3
0
        internal void Initialize(CDataContainer context)
        {
            if (context != null)
            {
                this.DataContainer = context;
                this.document      = context.Document;

                int     majorVersionNumber = context.Server.Information.Version.Major;
                Version sql2000sp3         = new Version(8, 0, 760);
                Version sql2005sp2         = new Version(9, 0, 3000);

                if (context.Server.DatabaseEngineType == DatabaseEngineType.SqlAzureDatabase)
                {
                    this.prototype = new DatabasePrototypeAzure(context);
                }
                else if (Utils.IsSql11OrLater(context.Server.Version.Major))
                {
                    this.prototype = new DatabasePrototype110(context);
                }
                else if (majorVersionNumber == 10)
                {
                    this.prototype = new DatabasePrototype100(context);
                }
                else if ((sql2005sp2 <= context.Server.Information.Version) &&
                         (context.Server.Information.EngineEdition == Edition.EnterpriseOrDeveloper))
                {
                    this.prototype = new DatabasePrototype90EnterpriseSP2(context);
                }
                else if (8 < majorVersionNumber)
                {
                    this.prototype = new DatabasePrototype90(context);
                }
                else if (sql2000sp3 <= context.Server.Information.Version)
                {
                    this.prototype = new DatabasePrototype80SP3(context);
                }
                else if (7 < majorVersionNumber)
                {
                    this.prototype = new DatabasePrototype80(context);
                }
                else
                {
                    this.prototype = new DatabasePrototype(context);
                }

                this.prototype.Initialize();
            }
            else
            {
                this.DataContainer = null;
                this.document      = null;
                this.prototype     = null;
            }
        }
Exemple #4
0
        internal static DatabaseInfo DatabasePrototypeToDatabaseInfo(DatabasePrototype prototype)
        {
            var databaseInfo = new DatabaseInfo();

            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.Name, prototype.Name);
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.Owner, prototype.Owner);
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.Collation, prototype.Collation);
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.DatabaseState, prototype.DatabaseState.ToString());
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.RecoveryModel, prototype.RecoveryModel.ToString());
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.IsSystemDB, prototype.IsSystemDB.ToString());
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.AnsiNulls, prototype.AnsiNulls.ToString());
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.CompatibilityLevel, (int)prototype.DatabaseCompatibilityLevel);
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.LastBackupDate, GetBackupDate(prototype.LastBackupDate));
            databaseInfo.Options.Add(AdminServicesProviderOptionsHelper.LastLogBackupDate, GetBackupDate(prototype.LastLogBackupDate));

            databaseInfo.Options.Add(
                AdminServicesProviderOptionsHelper.FileGroups + "Count",
                prototype.Filegroups.Count);

            for (int i = 0; i < prototype.Filegroups.Count; ++i)
            {
                var    fileGroup  = prototype.Filegroups[i];
                string itemPrefix = AdminServicesProviderOptionsHelper.FileGroups + "." + i + ".";
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.Name, fileGroup.Name);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.IsMemoryOptimized, fileGroup.IsMemoryOptimized);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.IsReadOnly, fileGroup.IsReadOnly);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.IsFileStream, fileGroup.IsFileStream);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.IsDefault, fileGroup.IsDefault);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.FileGroupType, fileGroup.FileGroupType.ToString());
            }

            databaseInfo.Options.Add(
                AdminServicesProviderOptionsHelper.DatabaseFiles + "Count",
                prototype.Files.Count);

            for (int i = 0; i < prototype.Files.Count; ++i)
            {
                var    file       = prototype.Files[i];
                string itemPrefix = AdminServicesProviderOptionsHelper.DatabaseFiles + "." + i + ".";
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.Name, file.Name);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.PhysicalName, file.PhysicalName);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.Autogrowth, (file.DefaultAutogrowth != null ? file.DefaultAutogrowth.ToString() : string.Empty));
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.DatabaseFileType, file.DatabaseFileType.ToString());
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.Folder, file.DefaultFolder);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.Size, file.DefaultSize);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.FileGroup, file.FileGroup != null ? file.FileGroup.Name : string.Empty);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.InitialSize, file.InitialSize);
                databaseInfo.Options.Add(itemPrefix + AdminServicesProviderOptionsHelper.IsPrimaryFile, file.IsPrimaryFile);
            }

            AddAzureProperties(databaseInfo, prototype as DatabasePrototypeAzure);

            return(databaseInfo);
        }
Exemple #5
0
        public static DatabasePrototype ApplyToPrototype(DatabaseInfo databaseInfo, DatabasePrototype prototype)
        {
            if (databaseInfo != null && prototype != null)
            {
                prototype.Name = GetValueOrDefault(AdminServicesProviderOptionsHelper.Name, databaseInfo.Options, prototype.Name);

                foreach (var file in prototype.Files)
                {
                    if (string.IsNullOrWhiteSpace(file.Name))
                    {
                        file.Name = prototype.Name + "_" + logicalNameCount;
                    }
                    else
                    {
                        file.Name += prototype.Name + file.Name + "_" + logicalNameCount;
                    }

                    ++logicalNameCount;
                }
            }
            return(prototype);
        }