Octopus.Script exported 2019-05-16 by alex-yates belongs to ‘Redgate’ category.
Creates a database clone with Redgate SQL Clone.
Requires SQL Clone.
Version date: 16th May 2019
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
SQL Clone Server (required)
cloneServer = 
The URL for your SQL Clone server (e.g. http://sql-clone.example.com:14145)
SQL Clone User (optional)
cloneUser = 
User account to access SQL Clone. (If left blank Octopus tentacle account will be used.)
SQL Clone Password (optional)
clonePassword = 
User account to access SQL Clone. (If left blank Octopus tentacle account will be used.)
Image Name For Clone (required)
imageNameForClone = 
The name of the database image from which to create database clone.
Template Name (optional)
templateName = 
A template to modify this clone (optional).
SQL Server (required)
cloneSqlServer = 
The target SQL Server to create the clone on. This SQL Server instance must have already been added to the SQL Clone Server specified above.
Clone Name (required)
cloneName = 
The name of the clone, which will also be the database name.
Delete clone if exists
deleteClone = 
Delete any existing clone with the same name prior to creating this clone.
Script body
Steps based on this template will execute the following PowerShell script.
$ErrorActionPreference = 'Stop'
# The code for this step template is largely a copy/paste job from the
# Azure DevOps Services step template which is maintained by Redgate:
# https://github.com/red-gate/SqlCloneVSTSExtension/blob/master/ImageTask/SQLCloneCloneTask.ps1
# The code was copied and adapted on 16th May 2019.
Write-Verbose "cloneServer is $cloneServer"
Write-Verbose "cloneUser is $cloneUser"
Write-Verbose "clonePassword is $clonePassword"
Write-Verbose "imageNameForClone is $imageNameForClone"
Write-Verbose "templateName is $templateName"
Write-Verbose "cloneSqlServer is $cloneSqlServer"
Write-Verbose "cloneName is $cloneName"
Write-Verbose "deleteClone is $deleteClone"
Write-Debug "Entering script SQLCloneCloneTask.ps1"
# This line is broken: Import-Module "$PSScriptRoot\Modules\RedGate.SQLClone.PowerShell.dll"
if($cloneUser){
    $password = ConvertTo-SecureString -String $clonePassword -AsPlainText -Force
    $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $cloneUser,$password
}
Connect-SqlClone -ServerUrl $cloneServer -Credential $credential
Write-Output "Connected to SQL Clone server"
        $sqlServerParts = $cloneSqlServer.Split('\', [System.StringSplitOptions]::RemoveEmptyEntries)
        if ($sqlServerParts.Count -ge 3)
        {
            write-error 'SQL Server instance ' + $cloneSqlServer + ' has not been recognised, if specifying a named instance please use "machine\instance"'
            exit 1
        }
        $cloneSqlServerHost = $sqlServerParts[0]
        $instanceName = ''
        if ($sqlServerParts.Count -ge 2)
        {
            $instanceName = $sqlServerParts[1]
        }
        
        try
        {
            $instance = Get-SqlCloneSqlServerInstance -MachineName $cloneSqlServerHost -InstanceName $instanceName
            Write-Output "Found SQL Server instance"
        }
        catch
        {
            $instances = Get-SqlCloneSqlServerInstance
            $instanceNames = "`n"
            Foreach ($cInstance in $instances)
            {
                $instanceNames += $cInstance.Name + "`n"
            }
            $message = 'SQL Server instance "' + $cloneSqlServer + '"  has not been added to SQL Clone, available instances:' + $instanceNames
            write-error $message
            exit 1
        }
        
        try
        {
            $image = Get-SqlCloneImage -Name $imageNameForClone
            Write-Output "Found image"
        }
        catch
        {
            $images = Get-SqlCloneImage
            $imageNames = "`n"
            Foreach ($cImage in $images)
            {
                $imageNames += $cImage.Name + "`n"
            }
            $message = 'SQL Clone image "' + $imageNameForClone + '"  has not been added to SQL Clone, available images:' + $imageNames
            write-error $message
            exit 1
        }
        
        if($deleteClone)
        {
            try
            {
                $clone = Get-SqlClone -Name $cloneName -Location $instance
                Write-Output "Deleting existing clone"
                Remove-SqlClone -Clone $clone | Wait-SqlCloneOperation
            }
            catch
            {
                # Clone didn't exist so nothing to do
            }
        }
        if($templateName)
        {
            Write-Output "Creating clone with template:" + $templateName
            $image | New-SqlClone -Name $cloneName -Location $instance -Template $templateName | Wait-SqlCloneOperation
        }
        else
        {            
            Write-Output "Creating clone"
            $image | New-SqlClone -Name $cloneName -Location $instance | Wait-SqlCloneOperation            
        }
        Write-Output "Finished creating clone"        
Write-Debug "Leaving script SQLCloneCloneTask.ps1"
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
  "Id": "96d88bbf-2e0a-4630-b4b6-bd179effedd7",
  "Name": "Redgate - SQL Clone, Create Clone",
  "Description": "Creates a database clone with [Redgate SQL Clone](https://www.red-gate.com/products/dba/sql-clone/index).\n\nRequires SQL Clone.\n\n*Version date: 16th May 2019*",
  "Version": 1,
  "ExportedAt": "2019-05-16T11:37:47.360Z",
  "ActionType": "Octopus.Script",
  "Author": "alex-yates",
  "Packages": [],
  "Parameters": [
    {
      "Id": "8c140a4c-65a2-4341-a604-73d14775b3a0",
      "Name": "cloneServer",
      "Label": "SQL Clone Server (required)",
      "HelpText": "The URL for your SQL Clone server (e.g. http://sql-clone.example.com:14145)",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "e5ac1d04-b8a5-440e-ba69-a5d66a53abba",
      "Name": "cloneUser",
      "Label": "SQL Clone User (optional)",
      "HelpText": "User account to access SQL Clone. (If left blank Octopus tentacle account will be used.)",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "5f6288f2-57c9-4a11-91f2-b0c2e3cb9ccd",
      "Name": "clonePassword",
      "Label": "SQL Clone Password (optional)",
      "HelpText": "User account to access SQL Clone. (If left blank Octopus tentacle account will be used.)",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Sensitive"
      }
    },
    {
      "Id": "ee5286d3-f233-410c-92ab-36743f8743e7",
      "Name": "imageNameForClone",
      "Label": "Image Name For Clone (required)",
      "HelpText": "The name of the database image from which to create database clone.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "0edb1e1f-0c27-428b-9ff0-7c76faf1369e",
      "Name": "templateName",
      "Label": "Template Name (optional)",
      "HelpText": "A template to modify this clone (optional).",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "5e9f4d95-4776-4a0e-8245-05d645bd0997",
      "Name": "cloneSqlServer",
      "Label": "SQL Server (required)",
      "HelpText": "The target SQL Server to create the clone on. This SQL Server instance must have already been added to the SQL Clone Server specified above.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "62da0567-35f5-4c3f-ac9e-61b75a399053",
      "Name": "cloneName",
      "Label": "Clone Name (required)",
      "HelpText": "The name of the clone, which will also be the database name.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "ab892024-c4b5-46c2-9434-2ad150e3e014",
      "Name": "deleteClone",
      "Label": "Delete clone if exists",
      "HelpText": "Delete any existing clone with the same name prior to creating this clone.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptBody": "$ErrorActionPreference = 'Stop'\n\n# The code for this step template is largely a copy/paste job from the\n# Azure DevOps Services step template which is maintained by Redgate:\n# https://github.com/red-gate/SqlCloneVSTSExtension/blob/master/ImageTask/SQLCloneCloneTask.ps1\n# The code was copied and adapted on 16th May 2019.\n\nWrite-Verbose \"cloneServer is $cloneServer\"\nWrite-Verbose \"cloneUser is $cloneUser\"\nWrite-Verbose \"clonePassword is $clonePassword\"\nWrite-Verbose \"imageNameForClone is $imageNameForClone\"\nWrite-Verbose \"templateName is $templateName\"\nWrite-Verbose \"cloneSqlServer is $cloneSqlServer\"\nWrite-Verbose \"cloneName is $cloneName\"\nWrite-Verbose \"deleteClone is $deleteClone\"\n\nWrite-Debug \"Entering script SQLCloneCloneTask.ps1\"\n\n# This line is broken: Import-Module \"$PSScriptRoot\\Modules\\RedGate.SQLClone.PowerShell.dll\"\n\nif($cloneUser){\n    $password = ConvertTo-SecureString -String $clonePassword -AsPlainText -Force\n    $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $cloneUser,$password\n\n}\nConnect-SqlClone -ServerUrl $cloneServer -Credential $credential\nWrite-Output \"Connected to SQL Clone server\"\n\n        $sqlServerParts = $cloneSqlServer.Split('\\', [System.StringSplitOptions]::RemoveEmptyEntries)\n        if ($sqlServerParts.Count -ge 3)\n        {\n            write-error 'SQL Server instance ' + $cloneSqlServer + ' has not been recognised, if specifying a named instance please use \"machine\\instance\"'\n            exit 1\n        }\n        $cloneSqlServerHost = $sqlServerParts[0]\n        $instanceName = ''\n        if ($sqlServerParts.Count -ge 2)\n        {\n            $instanceName = $sqlServerParts[1]\n        }\n        \n        try\n        {\n            $instance = Get-SqlCloneSqlServerInstance -MachineName $cloneSqlServerHost -InstanceName $instanceName\n            Write-Output \"Found SQL Server instance\"\n        }\n        catch\n        {\n            $instances = Get-SqlCloneSqlServerInstance\n            $instanceNames = \"`n\"\n            Foreach ($cInstance in $instances)\n            {\n                $instanceNames += $cInstance.Name + \"`n\"\n            }\n            $message = 'SQL Server instance \"' + $cloneSqlServer + '\"  has not been added to SQL Clone, available instances:' + $instanceNames\n            write-error $message\n            exit 1\n        }\n        \n        try\n        {\n            $image = Get-SqlCloneImage -Name $imageNameForClone\n            Write-Output \"Found image\"\n        }\n        catch\n        {\n            $images = Get-SqlCloneImage\n            $imageNames = \"`n\"\n            Foreach ($cImage in $images)\n            {\n                $imageNames += $cImage.Name + \"`n\"\n            }\n            $message = 'SQL Clone image \"' + $imageNameForClone + '\"  has not been added to SQL Clone, available images:' + $imageNames\n            write-error $message\n            exit 1\n        }\n        \n        if($deleteClone)\n        {\n            try\n            {\n                $clone = Get-SqlClone -Name $cloneName -Location $instance\n                Write-Output \"Deleting existing clone\"\n                Remove-SqlClone -Clone $clone | Wait-SqlCloneOperation\n            }\n            catch\n            {\n                # Clone didn't exist so nothing to do\n            }\n        }\n        if($templateName)\n        {\n            Write-Output \"Creating clone with template:\" + $templateName\n            $image | New-SqlClone -Name $cloneName -Location $instance -Template $templateName | Wait-SqlCloneOperation\n        }\n        else\n        {            \n            Write-Output \"Creating clone\"\n            $image | New-SqlClone -Name $cloneName -Location $instance | Wait-SqlCloneOperation            \n        }\n        Write-Output \"Finished creating clone\"        \n\nWrite-Debug \"Leaving script SQLCloneCloneTask.ps1\""
  },
  "Category": "Redgate",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/redgate-sql-clone-create-clone.json",
  "Website": "/step-templates/96d88bbf-2e0a-4630-b4b6-bd179effedd7",
  "Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9QTFRF9s3N7Z6e3U1N87+/+NjY0RIS2Tc3zgAA/O7u425u1SQk5Xp66Y2N/fPz76ys+eHh4F5e0AkJ/vj4/vz8////8g2GDwAABlRJREFUeNrsne2SpCoMhkEQ+RJQ+v6v9YDau+JO97a2IuxJdn7MVk3V+EzSQN6QiB7/iCEAARAAARAAARAAARAAARAAARAAARAAARAAAZAvrOeWUkSIwVprt7bwf2wIQYha3vuCQXpKjFbCNUzKoXtlQysZc05pQygvDmSkWMXnb9vuUwtAkjUKkzJAPKcEizcO+IBIOhycM94I4q1Rjn0D8bRWOmWsvwekx461Z1A8YViDbW6QnmJ3IsPvMGMacZ8NhBshu6usddrmAeGYtd2VNjBFLwcZqbqWYnGLQuOlIFSxLo9JRf1lIKNhQ5fLwuf+KhDbdHmtodeAkMwcXYsBBEAABEAABEAA5DqQdvg3QLjRyjWsrR4kyg29pYhg1ci2bpAFZzoLIywmKWuoF2QlQlgyxZuUlYNs4m2oG2SmmeONxHhjJ8XbLSAbMRufsb7dDbKIwhahyT+Vg/yON2+JVofWt3JA/iie7FvfigR5xtu8vn0mK5ULspb6Poi3KkDmDegZb0PeQ6O9AuYxhngzMusxnm1+eDyvNGtl1sSKpT4hSmFDkB1PIMFD1gwxVWOp69pYm2WNC0Toq2IzlXlT3TS6uNvUApgT2ixXAnaWj1zmnJ0lPrHs5xpt8JFQGBNiP60IZgfZRBdi764ExEsOk5MQLQ9kE13006JJy5rgJEJe3ES5AaRr+N8+pW/vOcw3UcJyR9c3BO4ACT7xSSHreBY1yMbZ+0A2JPS7khy6EWSzM1pZLUjHyKdrV+Egm7WLsGpB0ujyqK0WZPM5MbJakHQ/8YdJ7gfpREoy1ALy6ClCBmMthGNNOEVJlezxpq0FZC2Ohn3QUpSc1Uct5YFyw20gr20MHkOEkPnmcpSAKwVJPbYcBqOQhbESopmikUWvtWsRqFiQt+UUa4PHAphWSjgX2SStECQNRB657HLnr2KQ+xIrAAEQAPnLMtP/IyDkl7Ajp3/N3HGk9GQmOXf1iNrZ+Gy+QJAXgohYa9k2nFBYPFkutE7NpvFshkyGAulYGEg36BWJJ7LbHOuHRX2cTc4WHEtLAwk+4UcO9ag4kDS6et1WC5JGV6/rBQk+WS/RaqgWpGtXvRKei6FakPSXc1EvyGbt+iC6SgUJJIlPhmpBUr1r1EO9IEl0jaJekDS6rKsXJI0u/r4btmyQJLr4j7W558GRFg0STivr6FLxJC/0krmQ5Qw/W58fZDl3x68512CNmOyZZpjl2Q7cSskJwslU7rfx6/SsF8QHAAEQAKkC5BY56BzzHE01rLD9xL3oDjlol42c87DfxKIiHd+KROWV3uKDkzjGaSmsRbExnAUGad6mJ0WAhDBBc5g0c5xMlc7tfXe5ut41/pH85gfpp+KzmYvPjdwxyEKaceWT9m4QJA93H66jq1c3g/hvenUlerlllJ1YvY2uVFqpDGQdXT556tpAkrVrfRW9OpDgkx9J6gNJLnQSWTFIcg3y12GlRpD1dWFvopTB2K1Xyk+JrjGcy36PnKwD5NnAJLChBSRW+0GGOBzTqdjbgywvJkPcAxJiX+koJlr+2UzMckCW8BEaE9rPbdN72hTvB5ladMTSohOf/liXJWW3gbTSOf26aWpnJm9yNlTGybbT3z88/yJ+nNTk6m2bscXVhudHpw4bfu4oFDc5m473fn4/+uMQLBx7MeaifIHuw0EqJYOMNo4aEZ+NGikUhCOs3K7hLyWBPMfxuCMCTCEgzwFJxwfW3A+yP4qKAuGxVyTOLT9riFh+kDGOBdFxhP+pg6lygng+DZ5hlww+ywDS8z2jc8oEsWje0eT1sw4vKytMn2S2500QZYLACFAAARAAARAAARAAKRDEujYrx+Auem1HfDtPRg6pd4mau47xHqlcThn2vqVnbz7CRYZEpJNi93DL3YmVR/rqN/VIceBNdgdSXW+Nuw5lYPjQhfWD4gM37oIQG2Sj7EHJ/6iK4h9Iu1NjbJBOk+PNA9/IQZwSdZIaNzBlKP+m+vKVrjUFAQmeOS5rxTdvBk98P9f1FKWxR0QLx3Yq7sM8+hSd04tykvbrH2MsIJipkPb39VXG2xyEWj4+zrIz1fhlufF+nCYf6blvaepimr/VU/dSf2I5OF/Fyj8yGbzpGEAABEAABEAABEAABEAABEAABEAABEAA5H8F8p8AAwD2WseknbBRCwAAAABJRU5ErkJggg==",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}
Page updated on Thursday, May 16, 2019