Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }