Script to create a password pretected DMG with no prompts

I've tried quite a few third part DMG tools (Drop DMG, DMG Master, iDMG etc) in the search for an app which can fully automate the creation of a secure DMG file.
In an ideal setup, I would simply drop a folder onto the scripts icon and it would then, completely automatically:
+1 - Set the DMG format to compressed.+
+2 - Set security to 256 Bit AES.+
+3 - Enter a password already stored in the script (no prompt).+
+4 - Save it using the original folders name for the DMG name.+
+5 - Save to the same location the folder came from.+
I'm sure many would say having the password stored in an AppleScript is not very secure, but for this particular workflow its not a problem (assuming I can even do that?)
Has anyone been able to create such an automatic DMG script - is it even possible to do all those steps with a script or could suggest another 3rd party tool I've missed?
Many thanks.

Although most people don't like [GUI Scripting|http://www.macosxautomation.com/applescript/uiscripting/index.html] very much, maybe you might want to try the following script, which, on my computer, seems to do exactly what you were asking for (most of the time in fact, with a few very strange exceptions).
on open theFolders
set thePassword to "Mark.Burton" -- you should change the password of course
tell application "Disk Utility" to activate
repeat with theCurrentFolder in theFolders
tell application "Finder"
set theName to displayed name of theCurrentFolder
set theContainer to container of theCurrentFolder
move theCurrentFolder to desktop -- temporarily
end tell
tell application "System Events"
tell process "Disk Utility"
keystroke "n" using {shift down, command down}
repeat until window 1 exists
end repeat
keystroke "d" using {command down} -- desktop
tell window 1
click radio button 2 of radio group 1 of group 1
select (row 1 of outline 1 of scroll area 2 of splitter group 1 of group 1 whose value of static text 1 of group 1 is theName)
click button "Image"
tell group 1
click pop up button 1
click menu item -1 of menu 1 of pop up button 1 -- AES 256
click pop up button 2
click menu item 2 of menu 1 of pop up button 2 -- compressed
end tell
end tell
keystroke return
end tell
tell process "SecurityAgent"
repeat until window 1 exists
end repeat
keystroke thePassword & tab & thePassword
click checkbox 1 of window 1
keystroke return
end tell
tell process "Disk Utility"
delay 1
repeat while window 2 exists
-- wait until the end of the creation process
end repeat
end tell
end tell
set theDiskImage to alias ((path to desktop as string) & theName & ".dmg")
tell application "Finder" to move {theCurrentFolder, theDiskImage} to theContainer
end repeat
tell application "Disk Utility" to quit
end open

Similar Messages

  • How do I create a password protected pdf with watermark?

    I need to put a watermark on a pdf and have it password protected.  I'm using Adobe Acrobat X Pro. Got any tips?

    1. Tools->Pages->Watermark
    2. Tools->Protection->Encrypt->Encrypt with Password.
    3.Save As (or Save if it's OK to overwrite the original PDF).

  • Password-protected .dmg file "forgets" it is protected

    So, on my external USB hard disk I had created two password-protected ".dmg" disc images. Both functioned normally for about 2 months. Then, suddenly, one of the two images now opens without asking for its password (the other file remains protected). What happened?
    I tried ejecting the virtual disc and double-clicking on the .dmg file again, and each time the disc mounted with no password required. I ejected the external hard disk, unplugged the USB connector, replugged it, and the same thing happens.
    It looks as though I need to replace this .dmg file with another password-protected one, but how long will that last?
    PPC PowerMac 2.7 GHz dual-CPU G5
    Mac OS X 10.4.11

    Hmmmm, Open Console in Applications>Utilities & see if there are any clues or repeating messages when trying to open Keychain Access.
    Maybe this first...
    "Try Disk Utility
    1. Insert the Mac OS X Install disc, then restart the computer while holding the C key.
    2. When your computer finishes starting up from the disc, choose Disk Utility from the Installer menu at top of the screen. (In Mac OS X 10.4 or later, you must select your language first.)
    *Important: Do not click Continue in the first screen of the Installer. If you do, you must restart from the disc again to access Disk Utility.*
    3. Click the First Aid tab.
    4. Select your Mac OS X volume.
    5. Click Repair Disk, (not Repair Permissions). Disk Utility checks and repairs the disk."
    http://docs.info.apple.com/article.html?artnum=106214
    Then try a Safe Boot, (holding Shift key down at bootup), run Disk Utility in Applications>Utilities, then highlight your drive, click on Repair Permissions, reboot when it completes.
    (Safe boot may stay on the gray radian for a long time, let it go, it's trying to repair the Hard Drive & clear caches.)
    If perchance you can't find your install Disc, at least try it from the Safe Boot part onward.

  • Create New NON SA user with Priviledges

    Hi all,
    I want to create new non sa user login with openrowset function privileges for read/write operation on excel sheet file.
    So please can nay one give me example or script to create non sa user login with above privileges.
    Thanks in advanced.

    Thanks to all for reply.
    I give ADMINISTER BULK OPERATIONS permission to user I also create linked server with required credentials but does not work. With sa
    credentials it work.
    I execute following statement
    select * from openrowset('Microsoft.ACE.OLEDB.12.0',
    Excel 12.0;HDR=Yes;Database ='C:SAMPLES\Northwind.xls';select * from [sheet1$])
    when I execute above statement it gives me error.
    please reply.
    Hi AK9841,
    Please review the detailed answer in your another thread,
    https://social.technet.microsoft.com/Forums/en-US/59710c1d-6bfe-42dc-ac80-643b9ae7f8f0/create-new-non-sa-user?forum=transactsql
    Thanks,
    Lydia Zhang

  • OVM 3 CLI Script to create VMs

    Hi, I am hoping someone can help! I have a large number of VMs that will need to be created, and what I would like to do is use a script to create the VM's from OVM's CLI rather than using the GUI.
    Ideally the script would read the paramaters of the VM (hostname,serverpool, cpu memory nic config) from a paramater file (ie an XML). The reading in coponent is not critical, the important part right now is just getting a script to create one VM to begin with (taking in its paramaters by whatever means)
    The script needs to do only the basics => Clone VM, edit memory, CPU and configure NICs.
    I have had a play around and can create/clone a VM and also edit memory and CPU, however hitting some problems with configuring the Nics/ports. Which lead me to simply ask on here to see if some clever people have already created a script tha does the above (and perhpap even more that I am yet to think f)?
    If anyone could help it would be greaaatly appreciated!
    Kind regards,
    Andy

    Hi,
    First connect to the CLI using SSH, look at this URL.
    Second, to a create your VM from CLI, look at this URL.
    I hope this can help you
    Best Regards

  • Create Hyper-V Virtual Machines with Windows PowerShell searching on hostname

    Dear,
    I’m a starter with PowerShell scripting an I’m looking for a script to create Hyper-V Virtual Machines with Windows PowerShell. The idea behind the script is that when I run the script its first searching for the hostname. I’m migrating 24 locations and each
    location have a different hostname like xxx-SRV001. The script needs to use the first 3 signs from the hostname in this case “xxx” and create 2 VM's with below info:
    Virtual Machine 1 2048MB
    Virtual Machine 2 4096MB
    Location D:\VM\
    I can create VM's with Powershell into Hyper-V so only a script to first searching for the first 3 characters of the hostname is enough.
    Example:
    It's the intention that when the script runs it's looking for the hostname. As example we have hostname 000-SRV001
    If the script see the first 3 characters of the hostname, in this case 000 he need to create 2 VMs with name xxx-SRV002 and xxx-SRV004
    I think it must be something with 
    $hostname = "Get-WmiObject -computername $Machine Win32_Computersystem"
    But then when i'm asking for $hostname he must give me back the hostname and if the hostname is 1 of the 24 locations then he need to create 2 vm's in Hyper-V with above info.
    Can you help me or do you have a script for this? 

    Juste use :
    $vram = 1GB*$vRam
    You not need the "
    Do you have any error with the creation of the VM?
    # Variables
    $VMName = Import-Csv "C:\HyperV\input.csv"
    $VHD = 40GB
    $VMLOC = "C:\HyperV"
    $vSwitch = "External"
    $ISO = "C:\ISO\WinServer2012R2.iso"
    $LocationCode = $env:COMPUTERNAME.Split("-")[0]
    # Create VM Folder
    MD $VMLOC -ErrorAction SilentlyContinue
    Foreach ($VM in $VMNames)
    $Name = $VM.name
    [int64]$vRam = $vm.vram
    $vram = 1GB*$vRam
    $VMName = $LocationCode+$Name
    # Create Virtual Machine
    New-VM -Name $VMName -Path $VMLOC -MemoryStartupBytes $vRam -NewVHDPath "$VMLOC\$VMName\Virtual Harddisks\$VMName.vhdx" -NewVHDSizeBytes $VHD -SwitchName $vSwitch
    # Configure Virtual Machines
    Set-VMDvdDrive -VMName $VMName -Path $ISO
    Start-VM $VMName
    # Configure Virtual Machines
    Set-VMDvdDrive -VMName $VMName -Path $ISO
    Start-VM $VMName
    Error message 
    New-VM : '003' failed to modify device 'Memory'. (Virtual machine ID 8F5F32D7-F1A0-4A68-8B01-CA6661869A1E)
    Invalid startup memory amount assigned for '003'. The minimum amount of memory you can assign to this virtual machine is '32' MB. (Virtual machine ID 8F5F32D7-F1A0-4A68-8B01-CA6661869A1E)
    A parameter that is not valid was passed to the operation.
    At line:20 char:5
    + New-VM -Name $VMName -Path $VMLOC -MemoryStartupBytes $vRam -NewVHDPath "$VM ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (Microsoft.HyperV.PowerShell.VMTask:VMTask) [New-VM], VirtualizationOperationFailedException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.NewVMCommand
    Set-VMDvdDrive : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:23 char:5
    + Set-VMDvdDrive -VMName $VMName -Path $ISO
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Set-VMDvdDrive], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMDvdDriveCommand
    Start-VM : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:24 char:5
    + Start-VM $VMName
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Start-VM], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.StartVMCommand
    Set-VMDvdDrive : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:27 char:5
    + Set-VMDvdDrive -VMName $VMName -Path $ISO
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Set-VMDvdDrive], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMDvdDriveCommand
    Start-VM : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:28 char:5
    + Start-VM $VMName
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Start-VM], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.StartVMCommand
    New-VM : '003' failed to modify device 'Memory'. (Virtual machine ID C0FC835E-36D4-462E-BD21-69A75A808E2F)
    Invalid startup memory amount assigned for '003'. The minimum amount of memory you can assign to this virtual machine is '32' MB. (Virtual machine ID C0FC835E-36D4-462E-BD21-69A75A808E2F)
    A parameter that is not valid was passed to the operation.
    At line:20 char:5
    + New-VM -Name $VMName -Path $VMLOC -MemoryStartupBytes $vRam -NewVHDPath "$VM ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (Microsoft.HyperV.PowerShell.VMTask:VMTask) [New-VM], VirtualizationOperationFailedException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.NewVMCommand
    Set-VMDvdDrive : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:23 char:5
    + Set-VMDvdDrive -VMName $VMName -Path $ISO
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Set-VMDvdDrive], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMDvdDriveCommand
    Start-VM : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:24 char:5
    + Start-VM $VMName
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Start-VM], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.StartVMCommand
    Set-VMDvdDrive : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:27 char:5
    + Set-VMDvdDrive -VMName $VMName -Path $ISO
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Set-VMDvdDrive], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMDvdDriveCommand
    Start-VM : A parameter is invalid. Hyper-V was unable to find a virtual machine with name 003.
    At line:28 char:5
    + Start-VM $VMName
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (003:String) [Start-VM], VirtualizationInvalidArgumentException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.StartVMCommand

  • Error message when trying to create DMG with Disk Utility

    Have a highly confidential folder on my drive, so am driving to convert to a DMG file, with password protection. It gets nearly done with the DMG process then generates Error - 49168.
    Anyone know what means?
    1.I choose read-write as my access options
    2.Under encryption I choose the AES setting. It asks me to create a password and I create one (unchecking the "remember password option, of course")
    3. It seems to get through 95% of the process, then produces that error message.
    -- david in KC

    A little Googling suggests that Norton Anti-Virus can cause this problem by trying to scan the image as it's being created. The fix seems to be to turn off NAV while creating the image.
    If that doesn't work, I'd suggest rebooting from the system disk and having Disk Utility repair the disk, to make sure all is in good working order.

  • HT204053 I have a small older iPod with one email address and passcode, & I have created an "Apple ID" yesterday with a different email address & different password, for my new iPOD Touch5:  Does that ID & pw now apply to my iTunes?

    Does creating a new Apple ID with user name, email and password ( for my new iPod Touch 5  CHANGE and my existing iTunes account username and pw ?
    Thanks....Gary
    [email protected]

    Your new iPod Touch will use what ever ID you specify in Settings>iTunes & App Stores when you purchase apps and media from the iTunes and App stores, regardless of the ID you may have been using before on your older device.

  • How to create a password with JTextField

    Hi, I need to create a password field on the JTabbedPane. I can create a TextField and setEchoChar to make it a password field. However it is not working well with the rest of the JComponents. Can I do this on a JTextField? I could not find the functionality.
    Thanks for the help!
    -Joanne

    use JPasswordField instead

  • I created a password to my iPad as a parental restriction, but my daughter played with it and pushed the wrong password 10 times my ipad was disabled, what should i do, since it wont sync with itunes becoz it will just say, cannot sync files becoz the dev

    i created a password to my iPad as a parental restriction, but my daughter played with it and pushed the wrong password 10 times my ipad was disabled, what should i do, since it wont sync with itunes becoz it will just say, cannot sync files becoz the device is password enabled, Please somebody helpme

    If you are talking about the passcode that gains access to the iPad - you will have to restore your iPad in order to unlock it. You will want to use the last computer that you synced with so that you can recover all of your app data, settings, etc. this explains how to restore the iPad. At the end of the process restore from your backup as described.
    http://support.apple.com/kb/HT1414
    If iTunes will not let you restore that way, you may need to use recovery mode to restore, and you can read about that process here.
    http://support.apple.com/kb/ht4097
    IF - you are talking about a restrictions pass code that you put on the device to restrict content or downloading apps or something like that - you do not want to restore from the backup - because that backup will contain the passcode that you cannot remember and you will end up where you started.

  • Create and send email issue with UCCX/IP-IVR 8.0 script

    Hi all,
    I am facing issue with create and send email option with script. In my call flow there is an option to offer call to key in their phone number and script need to pass that phone number to supervisor as an email. I have created the script but every time when I key in the phone number is pass through the unsuccessful node. Please find the script as attachment.
    Thanks and Regards,
    Ashfaque

    Hi How Yee,
    Which version of UCCX/IPIVR you are using and what is the type of license? Because this feature is only supported with Premium License. Please check the UCCX data sheet from the below link.
    http://www.cisco.com/en/US/partner/prod/collateral/voicesw/custcosw/ps5693/ps1846/data_sheet_c78-629807.html
    You will get the information under "Integrated IVR Features with Server Software" of table:4.
    Thanks and Regards,
    Ashfaque.

  • Script to Create databases with params to support dir location for data or log files

    Script to Create databases with params to support dir location for data or log files

    DECLARE @Query VARCHAR(MAX)=''
    DECLARE @DbName VARCHAR(400) = '<DBNAME>'
    DECLARE @DbFilePath VARCHAR(400) = '<Valid DataFilePath>'
    DECLARE @DBLogFilePath VARCHAR(400)='<Valid LogFile Path>'
    SET @Query = @Query + 'CREATE DATABASE '+@DbName +' ON PRIMARY '
    SET @Query = @Query + '( NAME = '''+@DbName +''', FILENAME = '''+@DbFilePath+@DbName +'.mdf'' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) '
    SET @Query = @Query + ' LOG ON '
    SET @Query = @Query + '( NAME = '''+@DbName +'_log'', FILENAME = '''+@DblogFilePath+@DbName +'_log.ldf'' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)'
    print @query
    exec(@query)
    --Prashanth

  • I have a request from a customer to run a script to create multiple Usernames and Passwords on ACS5.3 appliance.

    I have a request from a cutomer to run a script to create multiple username and password on ACS5.3 Appliance. Does anyone has any suggestion on how to go about this?

    Have you tried using the import option on the ACS? You can put all your accounts in a csv file and upload it into the ASA.
    http://www.cisco.com/en/US/docs/net_mgmt/cisco_secure_access_control_system/5.3/user/guide/users_id_stores.html#wp1132152
    If that doesnt work you can use the REST Web Services in ACS also:
    http://www.cisco.com/en/US/docs/net_mgmt/cisco_secure_access_control_system/5.3/sdk/rest.html
    Thanks,
    Tarik Admani
    *Please rate helpful posts*

  • Modify Script to Create User Role on Single Database.

    Hi All,
    Below is the script to create user role on database. Here problem is when I execute this script, it creates user role for all database within an instance and I want it to create user role only on 2 database say TEST1 and TEST2
    Can anyone help me to modify the script? 
    --===================================================================================
    -- Description
    -- Database Type: MSSQL
    -- This script creates a role called 'gdmmonitor' for ALL databases.
    -- It grants some system catalogs to this role to allow Classification and Assessment on the database.
    -- It then adds a user called "sqlguard" to all databases and grants this user gdmmonitor role.
    -- before runnign this script
    --  you MUST CREATE A SQL LOGIN CALLED 'sqlguard'
    --  This sqlguard login doesn't need to be added to any database or given
    --  any privilege.  The script will take care of that.
    --  Note:
    --   If you wish to use a different login name (instead of 'sqlguard') you need to change
    --   the value of the variable '@Guardium_user' in the script below; 
    --   (Look for the string: "set @Guardium_user = 'sqlguard'" and replace the 'sqlguard')
    -- after runnign this script
    -- Nothing to do, the script already creates the db user
    -- User/Password to use
    -- User: sqlguard (or any other name, if changed)
    -- Pass: user defined
    -- Role: gdmmonitor
    --===================================================================================
    PRINT '>>>==================================================================>>>'
    PRINT '>>> Creating role: "gdmmonitor" at the server level.'
    PRINT '>>>==================================================================>>>'
    -- Change to the master database
    USE master
    -- *** If a different login name is desired, define it here. ***
    DECLARE @Guardium_user AS varchar(50)
    set @Guardium_user = 'sqlguard'
    DECLARE @dbName AS varchar(256)
    DECLARE @memberName AS varchar(256)
    DECLARE @dbVer AS nvarchar(128)
    SET     @dbVer = CAST(serverproperty('ProductVersion') AS nvarchar)
    SET     @dbVer = SUBSTRING(@dbVer, 1, CHARINDEX('.', @dbVer) - 1)
    IF (@dbVer = '8') SET @dbVer = '2000'
    ELSE IF (@dbVer = '9')  SET @dbVer = '2005'
    ELSE IF (@dbVer = '10')  SET @dbVer = '2008'
    ELSE IF (@dbVer = '11')  SET @dbVer = '2012'
    ELSE SET @dbVer = '''Unsupported Version'''
    IF (@dbVer != '2000')
    BEGIN
      -- This privilege is required to peform a specific MSSQL test.
      -- Test name: SQL OLEDB disabled (DisallowAdhocAccess registry key) 
      -- Procedure execute: EXEC master.dbo.sp_MSset_oledb_prop 
      -- Purpose: To display provider property, not changing anything.
      PRINT '==> Granting MSSSQL 2005 and above setupadmin server role'
      EXEC master..sp_addsrvrolemember @loginame = @Guardium_user, @rolename = N'setupadmin'
    END
    SELECT  @dbName = DB_NAME()
    PRINT '==> Starting MSSql ' + @dbVer + ' role creation on database: ' + @dbName
    -- find any members of the role if they exist
    CREATE TABLE #rolemember (membername VARCHAR(256) NOT NULL)
    INSERT INTO #rolemember
    SELECT DISTINCT usr.name FROM dbo.sysusers usr, .dbo.sysmembers mbr
    WHERE usr.uid = mbr.memberuid
    AND mbr.groupuid = (SELECT uid FROM .dbo.sysusers WHERE name = 'gdmmonitor')
    --  Drop the Role Members If they exist
    IF EXISTS (SELECT count(*) FROM #rolemember)
    BEGIN
      PRINT '==> Dropping the gdmmonitor role members on: ' + @dbName
      DECLARE DropCursor CURSOR FOR SELECT membername from #rolemember
      OPEN DropCursor
      FETCH DropCursor INTO @memberName
      WHILE @@Fetch_Status = 0
       BEGIN
        PRINT '==> Dropping member: ''' + @memberName + ''''
        exec('EXEC sp_droprolemember ''gdmmonitor'', ''' + @memberName + ''' ;')
        FETCH DropCursor INTO @memberName
       END
      CLOSE DropCursor
      DEALLOCATE DropCursor
    END
    -- drop the role if it exists
    IF EXISTS (SELECT 1 FROM .dbo.sysusers WHERE name = 'gdmmonitor')
    BEGIN
      PRINT '==> Dropping the role gdmmonitor on: ' + @dbName
      exec sp_droprole 'gdmmonitor'
    END
    -- Create the role
    PRINT '==> Creating the role gdmmonitor on: ' + @dbName
    exec sp_addrole 'gdmmonitor'
    -- Grant select privileges to the role for MSSql Common
    PRINT '==> Granting common SELECT privileges on: ' + @dbName
    GRANT SELECT ON dbo.spt_values     TO gdmmonitor
    GRANT SELECT ON dbo.sysmembers     TO gdmmonitor
    GRANT SELECT ON dbo.sysobjects     TO gdmmonitor
    GRANT SELECT ON dbo.sysprotects    TO gdmmonitor
    GRANT SELECT ON dbo.sysusers       TO gdmmonitor
    GRANT SELECT ON dbo.sysconfigures  TO gdmmonitor
    GRANT SELECT ON dbo.sysdatabases   TO gdmmonitor
    GRANT SELECT ON dbo.sysfiles       TO gdmmonitor
    GRANT SELECT ON dbo.syslogins      TO gdmmonitor
    GRANT SELECT ON dbo.syspermissions TO gdmmonitor
    -- Grant execute privileges to the role for MSSql Common
    PRINT '==> Granting common EXECUTE privileges on: ' + @dbName
    GRANT EXECUTE ON sp_helpdbfixedrole    TO gdmmonitor
    GRANT EXECUTE ON sp_helprotect         TO gdmmonitor
    GRANT EXECUTE ON sp_helprolemember     TO gdmmonitor
    GRANT EXECUTE ON sp_helpsrvrolemember  TO gdmmonitor
    GRANT EXECUTE ON sp_tables             TO gdmmonitor
    GRANT EXECUTE ON sp_validatelogins     TO gdmmonitor
    GRANT EXECUTE ON sp_server_info       TO gdmmonitor
    -- Check if the version is 2005 or greater
    IF (@dbVer != '2000')
    BEGIN
      -- Grant select privileges to the role for MSSql 2005 and above
      PRINT '==> Granting MSSql 2005 and above SELECT privileges on: ' + @dbName
      GRANT SELECT ON sys.all_objects           TO gdmmonitor
      GRANT SELECT ON sys.database_permissions  TO gdmmonitor
      GRANT SELECT ON sys.database_principals   TO gdmmonitor
      GRANT SELECT ON sys.sql_logins            TO gdmmonitor
      GRANT SELECT ON sys.sysfiles              TO gdmmonitor
      GRANT SELECT ON sys.database_role_members TO gdmmonitor 
      GRANT SELECT ON sys.server_role_members   TO gdmmonitor 
      GRANT SELECT ON sys.configurations        TO gdmmonitor
      GRANT SELECT ON sys.master_key_passwords  TO gdmmonitor
      GRANT SELECT ON sys.server_principals     TO gdmmonitor
      GRANT SELECT ON sys.server_permissions    TO gdmmonitor
      GRANT SELECT ON sys.credentials    
       TO gdmmonitor
      --This is called by master.dbo.sp_MSset_oledb_prop.  
      --By defautl it should have already been granted to public. 
      GRANT EXECUTE ON sys.xp_instance_regread TO GDMMONITOR
      GRANT EXECUTE ON sys.sp_MSset_oledb_prop TO GDMMONITOR 
    END
    -- Re-add the dropped members
    IF EXISTS (SELECT 1 FROM #rolemember)
    BEGIN
      PRINT '==> Re-adding the role members on: ' + @dbName
      DECLARE DropCursor CURSOR FOR SELECT membername from #rolemember
      OPEN DropCursor
      FETCH DropCursor INTO @memberName
      WHILE @@Fetch_Status = 0
        BEGIN
         PRINT '==> Re-adding member: ''' + @memberName + ''''
         exec('EXEC sp_addrolemember ''gdmmonitor'', ''' + @memberName + ''' ;')
         FETCH DropCursor INTO @memberName
        END
      CLOSE DropCursor
      DEALLOCATE DropCursor
    END
    -- END of role creation on database
    PRINT '==> END of role creation on: ' + @dbName
    PRINT ''
    -- Change to the msdb database
    USE msdb
    set @memberName = ''
    SELECT  @dbName = DB_NAME()
    PRINT '==> Starting MSSql ' + @dbVer + ' role creation on database: ' + @dbName
    -- find any members of the role if it exists
    TRUNCATE TABLE #rolemember
    INSERT INTO #rolemember
    SELECT DISTINCT usr.name FROM .dbo.sysusers usr, .dbo.sysmembers mbr
    WHERE usr.uid = mbr.memberuid
    AND groupuid = (SELECT uid FROM .dbo.sysusers WHERE name = 'gdmmonitor')
    --  Drop the Role Members If they exist
    IF EXISTS (SELECT count(*) FROM #rolemember)
    BEGIN
      PRINT '==> Dropping the gdmmonitor role members on: ' + @dbName
      DECLARE DropCursor CURSOR FOR SELECT membername from #rolemember
      OPEN DropCursor
      FETCH DropCursor INTO @memberName
      WHILE @@Fetch_Status = 0
       BEGIN
        PRINT '==> Dropping member: ''' + @memberName + ''''
        exec('EXEC sp_droprolemember ''gdmmonitor'', ''' + @memberName + ''' ;')
        FETCH DropCursor INTO @memberName
       END
      CLOSE DropCursor
      DEALLOCATE DropCursor
    END
    -- drop the role if it exists
    IF EXISTS (SELECT 1 FROM .dbo.sysusers WHERE name = 'gdmmonitor')
    BEGIN
      PRINT '==> Dropping the gdmmonitor role on: ' + @dbName
      exec sp_droprole 'gdmmonitor'
    END
    -- Create the role
    PRINT '==> Creating the gdmmonitor role on: ' + @dbName
    exec sp_addrole 'gdmmonitor'
    -- Grant select privileges to the role for MSSql Common
    PRINT '==> Granting common SELECT privileges on: ' + @dbName
    GRANT SELECT ON dbo.sysobjects     TO gdmmonitor
    GRANT SELECT ON dbo.sysusers       TO gdmmonitor
    GRANT SELECT ON dbo.sysprotects    TO gdmmonitor
    GRANT SELECT ON dbo.sysmembers     TO gdmmonitor
    GRANT SELECT ON dbo.sysfiles       TO gdmmonitor
    GRANT SELECT ON dbo.syspermissions TO gdmmonitor
    GRANT SELECT ON dbo.backupset   TO gdmmonitor
    -- Check if the version is 2005 or greater
    IF (@dbVer != '2000')
    BEGIN
      -- Grant select privileges to the role for MSSql 2005 and above
      PRINT '==> Granting MSSql 2005 and above SELECT privileges on: ' + @dbName
      GRANT SELECT ON sys.all_objects TO gdmmonitor
      GRANT SELECT ON sys.database_permissions TO gdmmonitor
      GRANT SELECT ON sys.database_principals TO gdmmonitor
      GRANT SELECT ON sys.sysfiles TO gdmmonitor
      -- Grant execute privileges to the role for MSSql 2005 or above
      PRINT '==> Granting MSSql 2005 and above EXECUTE privileges on: ' + @dbName
      GRANT EXECUTE ON msdb.dbo.sp_enum_login_for_proxy TO gdmmonitor
      GRANT SELECT ON sys.database_role_members  TO gdmmonitor
    END
    IF (@dbVer > '2000' and @dbVer < '2012') 
    --This sp is not available in SQL 2012
    BEGIN
      GRANT EXECUTE ON sp_get_dtspackage TO gdmmonitor
    END
    -- Re-add the dropped members
    IF EXISTS (SELECT count(*) FROM #rolemember)
    BEGIN
      PRINT '==> Re-adding the gdmmonitor role members on: ' + @dbName
      DECLARE DropCursor CURSOR FOR SELECT membername from #rolemember
      OPEN DropCursor
      FETCH DropCursor INTO @memberName
      WHILE @@Fetch_Status = 0
        BEGIN
         PRINT '==> Re-adding member: ''' + @memberName + ''''
         exec('EXEC sp_addrolemember ''gdmmonitor'', ''' + @memberName + ''' ;')
         FETCH DropCursor INTO @memberName
        END
      CLOSE DropCursor
      DEALLOCATE DropCursor
    END
    -- drop the temporary table
    DROP TABLE #rolemember
    -- END of role creation on database
    PRINT '==> END of gdmmonitor role creation on: ' + @dbName
    -- Role creation complete
    PRINT '<<<==================================================================<<<'
    PRINT '<<< END of creating role: "gdmmonitor" at the server level.'
    PRINT '<<<==================================================================<<<'
    PRINT ''
    PRINT '>>>==================================================================>>>'
    PRINT '>>> Starting application database role creation'
    PRINT '>>>==================================================================>>>'
    use master
    DECLARE @databaseName AS varchar(80)
    DECLARE @executeString AS varchar(7950)
    DECLARE @dbcounter as int   
    set @dbcounter = 0
    DECLARE DatabaseCursor CURSOR FOR SELECT name from sysdatabases where name not in ('master', 'msdb')
    and not (status & 1024 > 1)
    --read only
    and not (status & 4096 > 1)
    --single user
    and not (status & 512 > 1)
    --offline
    and not (status & 32 > 1)
    --loading
    and not (status & 64 > 1)
    --pre recovery
    and not (status & 128 > 1)
    --recovering
    and not (status & 256 > 1)
    --not recovered
    and not (status & 32768 > 1)
    --emergency mode
    OPEN DatabaseCursor
    FETCH DatabaseCursor INTO @databaseName
    WHILE @@Fetch_Status = 0
    BEGIN
    set @dbcounter = @dbcounter + 1     
    set @databaseName = '"' + @databaseName + '"'  
    set @executeString = ''
    set @executeString = 'use ' + @databaseName + ' ' +
             'PRINT ''>>>==================================================================>>>'' ' +
             'PRINT ''>>> Starting MSSql ' + @dbVer + ' role creation on database: ' + @databaseName + ''' ' +
             'PRINT ''>>>==================================================================>>>'' ' +
           '/* Variable @memberNameDBname must be declare within the string or else it will fail */ ' +
           'DECLARE @memberName' + cast(@dbcounter as varchar(5)) + ' as varchar(50) ' +
           '/*find any members of the role if it exists*/ ' +
             'CREATE TABLE #rolemember (membername VARCHAR(256) NOT NULL) ' +
             'INSERT INTO #rolemember ' +
             'SELECT DISTINCT usr.name FROM dbo.sysusers usr, dbo.sysmembers mbr ' +
             'WHERE usr.uid = mbr.memberuid ' +
             'AND groupuid = (SELECT uid FROM dbo.sysusers WHERE name = ''gdmmonitor'') ' +
             '/*Drop the Role Members If they exist*/ ' +
             'IF EXISTS (SELECT * FROM #rolemember) ' +
             'BEGIN ' +
               'PRINT ''==> Dropping the role members on: ' + @databaseName + ''' ' +
               'DECLARE DropCursor CURSOR FOR SELECT membername from #rolemember ' +
               'OPEN DropCursor ' +
               'FETCH DropCursor INTO @memberName' + cast(@dbcounter as varchar(5)) + ' ' +
               'WHILE @@Fetch_Status = 0 ' +
                 'BEGIN ' +
                 'PRINT ''==> Dropping member: '' + @memberName' + cast(@dbcounter as varchar(5)) + ' ' +
                 'exec(''EXEC sp_droprolemember ''''gdmmonitor'''', '''''' + @memberName' + cast(@dbcounter as varchar(5))  + ' + '''''';'') ' +
                 'FETCH DropCursor INTO @memberName' + cast(@dbcounter as varchar(5)) + ' ' +
                 'END ' +
               'CLOSE DropCursor ' +
               'DEALLOCATE DropCursor ' +
             'END ' +
             '/*drop the role if it exists*/ ' +
             'IF EXISTS (SELECT 1 FROM .dbo.sysusers WHERE name = ''gdmmonitor'') ' +
             'BEGIN ' +
               'PRINT ''==> Dropping the gdmmonitor role on: ' + @databaseName + ''' ' +
               'exec sp_droprole ''gdmmonitor'' ' +
             'END ' +
             '/* Create the role */ ' +
             'PRINT ''==> Creating the gdmmonitor role on: ' + @databaseName + ''' ' +
             'exec sp_addrole ''gdmmonitor'' ' +
             '/* Grant select privileges to the role for MSSql Common */ ' +
             'PRINT ''==> Granting common SELECT privileges on: ' + @databaseName + ''' ' +
             'GRANT SELECT ON dbo.sysmembers     TO gdmmonitor ' +
             'GRANT SELECT ON dbo.sysobjects     TO gdmmonitor ' +
             'GRANT SELECT ON dbo.sysprotects    TO gdmmonitor ' +
             'GRANT SELECT ON dbo.sysusers       TO gdmmonitor ' +
             'GRANT SELECT ON dbo.sysfiles       TO gdmmonitor ' +
                   'GRANT SELECT ON dbo.syspermissions TO gdmmonitor ' +
             '/* Check if the version is 2005 or greater */ ' +
             'IF (' + @dbVer + ' != ''2000'') ' +
             'BEGIN ' +
               '/* Grant select privileges to the role for MSSql 2005 and above */ ' +
               'PRINT ''==> Granting MSSql 2005 and above SELECT privileges on: ' + @databaseName + ''' ' +
               'GRANT SELECT ON sys.database_permissions TO gdmmonitor ' +
               'GRANT SELECT ON sys.all_objects          TO gdmmonitor ' +
               'GRANT SELECT ON sys.database_principals  TO gdmmonitor ' +
               'GRANT SELECT ON sys.sysfiles      TO gdmmonitor ' +          
               'GRANT SELECT ON sys.database_role_members  TO gdmmonitor ' +           
             'END ' +
             '/* Re-add the dropped members */ ' +
             'IF EXISTS (SELECT 1 FROM #rolemember) ' +
             'BEGIN ' +
               'PRINT ''==> Re-adding the gdmmonitor role members on: ' + @databaseName + ''' ' +
               'DECLARE DropCursor CURSOR FOR SELECT membername from #rolemember ' +
               'OPEN DropCursor ' +
               'FETCH DropCursor INTO @memberName' + cast(@dbcounter as varchar(5)) + ' ' +
               'WHILE @@Fetch_Status = 0 ' +
                 'BEGIN ' +
                   'PRINT ''==> Re-adding member: '' + @memberName' + cast(@dbcounter as varchar(5)) + ' ' +
                   'exec(''EXEC sp_addrolemember ''''gdmmonitor'''', '''''' + @memberName' + cast(@dbcounter as varchar(5))  + ' + '''''';'') ' +
                   'FETCH DropCursor INTO @memberName' + cast(@dbcounter as varchar(5)) + ' ' +
                 'END ' +
               'CLOSE DropCursor ' +
               'DEALLOCATE DropCursor ' +
             'END ' +
             '/* drop the temporary table */ ' +
             'DROP TABLE #rolemember ' +
             'PRINT ''<<<==================================================================<<<'' ' +
             'PRINT ''<<< END of role creation on: ' + @databaseName + ''' ' +
             'PRINT ''<<<==================================================================<<<'' ' +
             'PRINT '' ''' +
             'PRINT '' '''
    execute (@executeString)
    FETCH DatabaseCursor INTO @databaseName
    END
    CLOSE DatabaseCursor
    DEALLOCATE DatabaseCursor
    --  Adding user to all the databases
    --  and grant gdmmonitor role, only if login exists.
    PRINT '>>>==================================================================>>>'
    PRINT '>>> Add and Grant gdmmonitor role to: ''' + @Guardium_user + ''''
    PRINT '>>> on all databases.'
    PRINT '>>>==================================================================>>>'
    USE master
    /* Check if @Guardium_user is a login exist, if not do nothing.*/
    IF NOT EXISTS (select * from syslogins where name = @Guardium_user)
    BEGIN
      PRINT ''
      PRINT '************************************************************************'
      PRINT '*** ERROR: Could not find the login: ''' + @Guardium_user + ''''
      PRINT '***        Please add the login and re-run this script.'
      PRINT '************************************************************************'
      PRINT ''
    END
    ELSE
    BEGIN
      DECLARE @counter AS smallint
      set @counter = 0
      --  This loop runs 4 time just to make sure that the @Guardium_user gets added to all db.
      --  99% of the time, this is totally unnecessary.  But in some rare case on SQL 2005
      --  the loop skips some databases when it tried to add the @Guardium_user.
      --  After two to three executions, the user is added in all the dbs.
      --  Might be a SQL Server bug.
      WHILE @counter <= 3
      BEGIN
      set @counter = @counter + 1
        set @databaseName = ''
        set @executeString = ''
        DECLARE DatabaseCursor CURSOR FOR SELECT name from sysdatabases
        where not (status & 1024 > 1)
    --read only
        and not (status & 4096 > 1)
    --single user
        and not (status & 512 > 1)
    --offline
        and not (status & 32 > 1)
    --loading
        and not (status & 64 > 1)
    --pre recovery
        and not (status & 128 > 1)
    --recovering
        and not (status & 256 > 1)
    --not recovered
    and not (status & 32768 > 1)
    --emergency mode    
        OPEN DatabaseCursor
        FETCH DatabaseCursor INTO @databaseName
        WHILE @@Fetch_Status = 0
        BEGIN
        set @databaseName = '"' + @databaseName + '"' 
        set @executeString = ''
        set @executeString = 'use ' + @databaseName + ' ' +
                 '/*Check if the login already has access to this database */ ' +
                 'IF EXISTS (select * from sysusers where name = ''' + @Guardium_user + ''' and islogin = 1) ' +
                 'BEGIN ' +
                  '/*Check if login already have gdmmonitor role*/ ' +
                  'IF NOT EXISTS (SELECT usr.name FROM dbo.sysusers usr, dbo.sysmembers mbr WHERE usr.uid = mbr.memberuid ' +
                'AND mbr.groupuid = (SELECT uid FROM dbo.sysusers WHERE name = ''gdmmonitor'') ' +
                'AND usr.name = ''' + @Guardium_user + ''') ' +
                  'BEGIN ' +
                  'PRINT ''==> Granting gdmmonitor role to ' + @Guardium_user + ' on database ' + @databaseName + ''' ' +
                  'execute sp_addrolemember ''gdmmonitor''' + ', [' + @Guardium_user + '] ' +
                  'PRINT '' ''' +
                  'END ' +
                 'END ' +
                 'IF NOT EXISTS (select * from sysusers where name = ''' + @Guardium_user + ''' and islogin = 1) ' +
                 'BEGIN ' +
                 'PRINT ''==> Adding user [' + @Guardium_user + '] to database: ' + @databaseName + ''' ' +
                 'execute sp_adduser [' + @Guardium_user + '] ' +
                 'PRINT ''==> Granting gdmmonitor role to ' + @Guardium_user + ' on database '  + @databaseName + ''' ' +
                 'execute sp_addrolemember ''gdmmonitor''' + ', [' + @Guardium_user + '] ' +
                 'PRINT '' ''' +
                 'END '
        execute (@executeString)
        FETCH DatabaseCursor INTO @databaseName
        END
        CLOSE DatabaseCursor
        DEALLOCATE DatabaseCursor
      END   -- end while
      -- Required for Version 2005 or greater.
      IF (@dbVer != '2000')
      BEGIN
        -- Grant system privileges to the @guardium_user.  This is a requirement for >= SQL 2005
        -- or else some system catalogs will filter our result from assessment test.
        -- This will show up in sys.server_permissions view.
        PRINT '==> Granting catalog privileges to: ''' + @Guardium_user + ''''
        execute ('grant VIEW ANY DATABASE to [' + @Guardium_user + ']' )
        execute ('grant VIEW ANY DEFINITION to [' + @Guardium_user + ']' )
      END
      PRINT '<<<==================================================================<<<'
      PRINT '<<< Finished Adding and Granting gdmmonitor role to: ''' + @Guardium_user + ''''
      PRINT '<<< on all databases.'
      PRINT '<<<==================================================================<<<'
      PRINT ''
    END
    GO

    Thanks a lot Sir... it worked.
    Can you also help me in troubleshooting below issue?
    This script is working fine on all databases except one MS SQL 2005 database. build of this database is 9.00.3042.00
    SA account with highest privileges is been used for script execution. errors received are as follow:
    >>>==================================================================>>>
    >>> Creating role: "gdmmonitor" at the server level.
    >>>==================================================================>>>
    ==> Granting MSSSQL 2005 and above setupadmin server role
    ==> Starting MSSql 2005 role creation on database: master
    (0 row(s) affected)
    ==> Dropping the gdmmonitor role members on: master
    ==> Creating the role gdmmonitor on: master
    Msg 15002, Level 16, State 1, Procedure sp_addrole, Line 16
    The procedure 'sys.sp_addrole' cannot be executed within a transaction.
    ==> Granting common SELECT privileges on: master
    Msg 15151, Level 16, State 1, Line 117
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 118
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 119
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 120
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 121
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 122
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 123
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 124
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 125
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 126
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    ==> Granting common EXECUTE privileges on: master
    Msg 15151, Level 16, State 1, Line 130
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 131
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 132
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 133
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 134
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 135
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.
    Msg 15151, Level 16, State 1, Line 136
    Cannot find the user 'gdmmonitor', because it does not exist or you do not have permission.

  • TIPS(42) : SCRIPT FOR CREATING ROLES

    제품 : SQL*PLUS
    작성날짜 : 1997-02-10
    TIPS(42) : SCRIPT FOR CREATING ROLES
    ====================================
    REM
    REM SCRIPT FOR CREATING ROLES
    REM
    REM This script must be run by a user with the DBA role.
    REM
    REM This script is intended to run with Oracle7.
    REM
    REM Running this script will in turn create a script to build all the roles
    REM in the database. This created file, create_roles.sql, can be run
    REM by any user with the DBA role or with the 'CREATE ROLE' system privilege.
    REM
    REM Since it is not possible to create a role under a specific schema, it is
    REM essential that the original creator be granted 'ADMIN' option to the role.
    REM Therefore, such grants will be made at the end of the create_roles.sql
    REM script. Since it is not possible to distinguish the creator from someone
    REM who was simply granted 'WITH ADMIN OPTION', all grants will be spooled.
    REM In addition, the user who creates the role is automatically granted
    REM 'ADMIN' option on the role, therefore, if this script is run a second
    REM time, this user will also be granted 'ADMIN' on all the roles. You must
    REM explicitly revoke 'ADMIN OPTION' from this user to prevent this from
    REM happening.
    REM
    REM NOTE: This script will not capture the create or grant on the Oracle
    REM predefined roles, CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, or
    REM IMP_FULL_DATABASE.
    REM
    REM Only preliminary testing of this script was performed. Be sure to test
    REM it completely before relying on it.
    REM
    set verify off
    set feedback off
    set termout off
    set echo off
    set pagesize 0
    set termout on
    select 'Creating role build script...' from dual;
    set termout off
    spool create_roles.sql
    select 'CREATE ROLE ' || lower(role) || ' NOT IDENTIFIED;'
    from sys.dba_roles
    where role not in ('CONNECT','RESOURCE','DBA', 'EXP_FULL_DATABASE',
    'IMP_FULL_DATABASE')
    and password_required='NO'
    select 'CREATE ROLE ' || lower(role) || ' IDENTIFIED BY VALUES ' ||
    '''' || password || '''' || ';'
    from sys.dba_roles, sys.user$
    where role not in ('CONNECT','RESOURCE','DBA', 'EXP_FULL_DATABASE',
    'IMP_FULL_DATABASE')
    and password_required='YES' and
    dba_roles.role=user$.name
    and user$.type=0
    select 'GRANT ' || lower(granted_role) || ' TO ' || lower(grantee) ||
    ' WITH ADMIN OPTION;'
    from sys.dba_role_privs
    where admin_option='YES'
    and granted_role not in ('CONNECT','RESOURCE','DBA', 'EXP_FULL_DATABASE',
    'IMP_FULL_DATABASE')
    order by grantee
    spool off
    exit
    REM ---------------------------------------------------------------------------

    One thing that stands out as being undesirable as far as best practices go is that you are placing code on objects (using the on() approach).  The proper approach is to assign instance names to your interactive objects and use them to place all of your code on the timeline where it is readily visible.  In doing so you may just find that alot of the code you show can be modularized into functions that can be shared by different objects rather than having each one carrying a full load on its back. You may find you can pass arguments to shared functions that make the same functions capable of supporting interactions with different objects
    Your on(press) call performs an unnecessary conditional test.  If you change the condition to be   if (project._currentframe != 25) you can avoid this.
    In your on(rollOver) call's set of conditionals, you have some lines that repeat in each condition, so they can be moved to the end outside the conditionals.
    Your on(release) call has the same issue as your on(press) call.  Also the overrun use of the _parent target is an indication that most of the code in this call would likely serve you better sitting in the _parent timeline, and your button could just call that function

Maybe you are looking for

  • Issue with Unzip in V2 with templates

    HI All, I have been using the unzip functionality successfully in my V2 environment but I have an issue. Is it possible to unzip the files which then create the page hierarchy but force then to use a specific page group template. At present when I un

  • Java.lang.NoSuchMethodException Using Method.invoke(...)

    I try to use Method.invoke() to invoke a method from a class. The method has parameters with type JTextArea and JMyFrame, but I got the error messages java.lang.NoSuchMethodException . Any ideas??? If I remove parameter "JFrame mainFrame" in start()

  • I cannot connect my iPod touch to iTunes

    There are several factors preventing me from connecting my sister's iPod Touch to iTunes on my computer (the same one I used to set up her iPod): 1.  The sleep/wake button is jammed, or just doesn't work. The button ITSELF feels fine.  It pushes down

  • Home hub 3 broadband light flashing orange & purpl...

    Hi, Broadband has stopped working with a flashing orange & purple broadband light (7 days and counting) Have phoned bt but they failed to resolve the issue over phone - resetting, power off/on etc. Tried 4 different branded adsl filters, alternative

  • Run Reporting services 2005 with databases housed on SQL Server 2012?

    Hi, I have a RS 2005 install in which the ReportServer and ReportServerTempDB databases reside on a different SQL Server 2005 server. I am planning to upgrade DB server to 2012 and would like to keep SSRS as 2005.As a second phase I will upgrade SSRS