public bool Process(DatabaseObjectsTypes objectType, SqlSmoObject[] objectList, int percent) { if (objectList != null && objectList.Count <SqlSmoObject>() > 0) { _eventArgs.StatusMsg = CommonFunc.FormatString(Properties.Resources.ScriptingObj, objectType); _eventArgs.PercentComplete = percent; _updateStatus(_eventArgs); switch (objectType) { case DatabaseObjectsTypes.Triggers: _sdb.ScriptTriggers(objectList); break; case DatabaseObjectsTypes.Roles: _sdb.ScriptRoles(objectList); break; case DatabaseObjectsTypes.Schemas: _sdb.ScriptSchemas(objectList); break; case DatabaseObjectsTypes.XMLSchemaCollections: _sdb.ScriptXMLSchemaCollections(objectList); break; case DatabaseObjectsTypes.UserDefinedDataTypes: _sdb.ScriptUDT(objectList); break; case DatabaseObjectsTypes.UserDefinedTableTypes: _sdb.ScriptUDTT(objectList); break; } } if (AsyncProcessingStatus.CancelProcessing) { _eventArgs.DisplayColor = Color.DarkCyan; _eventArgs.StatusMsg = Properties.Resources.MessageCanceled; _eventArgs.DisplayText = CommonFunc.FormatString(Properties.Resources.MessageCanceledProcessing, DateTime.Now.ToString(CultureInfo.CurrentCulture)) + Environment.NewLine; _eventArgs.PercentComplete = 100; _updateStatus(_eventArgs); } return(AsyncProcessingStatus.CancelProcessing); }
public bool Process(DatabaseObjectsTypes objectType, SqlSmoObject[] objectList, int percent) { if (objectList != null && objectList.Count <SqlSmoObject>() > 0) { _eventArgs.StatusMsg = CommonFunc.FormatString(Properties.Resources.ScriptingObj, objectType); _eventArgs.PercentComplete = percent; _updateStatus(_eventArgs); List <Trigger> listSupported = new List <Trigger>(); List <string> listNotSupported = new List <string>(); List <string> listEncrypted = new List <string>(); switch (objectType) { case DatabaseObjectsTypes.Assemblies: if (_smoScriptOpts.TargetServer == Properties.Resources.ServerType_AzureSQLDatabase) { foreach (SqlAssembly asm in objectList) { listNotSupported.Add(" " + asm.ToString()); } OutputNotSupported(Properties.Resources.ObjectTypeSQLAssemblies, listNotSupported); _sdb.OutputSQLString(CommonFunc.FormatString(Properties.Resources.RemoveCommentStart), Color.DarkGreen); _sdb.OutputSQLString(Properties.Resources.RemoveComment + " " + string.Format(Properties.Resources.NotSupported, Properties.Resources.ObjectTypeSQLAssemblies), Color.Red); _sdb.ScriptAssemblies(objectList); _sdb.OutputSQLString(CommonFunc.FormatString(Properties.Resources.RemoveCommentEnd), Color.DarkGreen); } else { _sdb.ScriptAssemblies(objectList); } break; case DatabaseObjectsTypes.PartitionFunctions: if (_smoScriptOpts.TargetServer == Properties.Resources.ServerType_AzureSQLDatabase) { foreach (PartitionFunction pf in objectList) { listNotSupported.Add(" " + pf.ToString()); } OutputNotSupported(Properties.Resources.ObjectTypePartitionFunctions, listNotSupported); _sdb.OutputSQLString(CommonFunc.FormatString(Properties.Resources.RemoveCommentStart), Color.DarkGreen); _sdb.OutputSQLString(Properties.Resources.RemoveComment + " " + string.Format(Properties.Resources.NotSupported, Properties.Resources.ObjectTypePartitionFunctions), Color.Red); _sdb.ScriptPartitionFunctions(objectList); _sdb.OutputSQLString(CommonFunc.FormatString(Properties.Resources.RemoveCommentEnd), Color.DarkGreen); } else { _sdb.ScriptPartitionFunctions(objectList); } break; case DatabaseObjectsTypes.PartitionSchemes: if (_smoScriptOpts.TargetServer == Properties.Resources.ServerType_AzureSQLDatabase) { foreach (PartitionScheme ps in objectList) { listNotSupported.Add(" " + ps.ToString()); } OutputNotSupported(Properties.Resources.ObjectTypePartitionSchemes, listNotSupported); _sdb.OutputSQLString(CommonFunc.FormatString(Properties.Resources.RemoveCommentStart), Color.DarkGreen); _sdb.OutputSQLString(Properties.Resources.RemoveComment + " " + string.Format(Properties.Resources.NotSupported, Properties.Resources.ObjectTypePartitionSchemes), Color.Red); _sdb.ScriptPartitionSchemes(objectList); _sdb.OutputSQLString(CommonFunc.FormatString(Properties.Resources.RemoveCommentEnd), Color.DarkGreen); } else { _sdb.ScriptPartitionSchemes(objectList); } break; case DatabaseObjectsTypes.Roles: _sdb.ScriptRoles(objectList); break; case DatabaseObjectsTypes.Schemas: _sdb.ScriptSchemas(objectList); break; case DatabaseObjectsTypes.Synonyms: _sdb.ScriptSynonyms(objectList); break; case DatabaseObjectsTypes.Triggers: foreach (Trigger tig in objectList) { if (tig.IsEncrypted) { if (tig.AssemblyName.Length > 0) { if (_smoScriptOpts.TargetServer == Properties.Resources.ServerType_AzureSQLDatabase) { listNotSupported.Add(" " + tig.ToString()); break; } } else { listEncrypted.Add(" " + tig.ToString()); break; } } listSupported.Add(tig); } OutputNotSupported(Properties.Resources.ObjectTypeTriggers, listNotSupported); OutputIsEncrypted(Properties.Resources.ObjectTypeTriggers, listEncrypted); if (listSupported.Count > 0) { _sdb.ScriptTriggers(listSupported.ToArray()); } break; case DatabaseObjectsTypes.UserDefinedDataTypes: _sdb.ScriptUDT(objectList); break; case DatabaseObjectsTypes.UserDefinedTableTypes: _sdb.ScriptUDTT(objectList); break; case DatabaseObjectsTypes.XMLSchemaCollections: _sdb.ScriptXMLSchemaCollections(objectList); break; } } if (AsyncProcessingStatus.CancelProcessing) { _eventArgs.DisplayColor = Color.DarkCyan; _eventArgs.StatusMsg = Properties.Resources.MessageCanceled; _eventArgs.DisplayText = CommonFunc.FormatString(Properties.Resources.MessageCanceledProcessing, DateTime.Now.ToString(CultureInfo.CurrentCulture)) + Environment.NewLine; _eventArgs.PercentComplete = 100; _updateStatus(_eventArgs); } return(AsyncProcessingStatus.CancelProcessing); }