/// <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()); } }
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; } }
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); }
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); }