< Back

Export-DbaScript

Mon Jan 13, 2020 9:59 am

NAME Export-DbaScript



SYNOPSIS

Exports scripts from SQL Management Objects (SMO)





SYNTAX

Export-DbaScript [-InputObject] <System.Object[]> [[-ScriptingOptionsObject]

<Microsoft.SqlServer.Management.Smo.ScriptingOptions>] [[-Path] <String>] [[-FilePath] <String>] [[-Encoding]

<String>] [[-BatchSeparator] <String>] [-NoPrefix <Switch>] [-Passthru <Switch>] [-NoClobber <Switch>] [-Append

<Switch>] [-EnableException <Switch>] [<CommonParameters>]





DESCRIPTION

Exports scripts from SQL Management Objects





PARAMETERS

-Append [<Switch>]

Append to file



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-BatchSeparator [<String>]

Specifies the Batch Separator to use. Uses the value from configuration Formatting.BatchSeparator by default.

This is normally "GO"



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-EnableException [<Switch>]

By default, when something goes wrong we try to catch it, interpret it and give you a friendly warning message.

This avoids overwhelming you with "sea of red" exceptions, but is inconvenient because it basically disables

advanced scripting.

Using this switch turns this "nice by default" feature off and enables you to catch exceptions with your own

try/catch.



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-Encoding [<String>]

Specifies the file encoding. The default is UTF8.



Valid values are:

-- ASCII: Uses the encoding for the ASCII (7-bit) character set.

-- BigEndianUnicode: Encodes in UTF-16 format using the big-endian byte order.

-- Byte: Encodes a set of characters into a sequence of bytes.

-- String: Uses the encoding type for a string.

-- Unicode: Encodes in UTF-16 format using the little-endian byte order.

-- UTF7: Encodes in UTF-7 format.

-- UTF8: Encodes in UTF-8 format.

-- Unknown: The encoding type is unknown or invalid. The data can be treated as binary.



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-FilePath [<String>]

Specifies the full file path of the output file.



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-InputObject [<System.Object[]>]

A SQL Management Object such as the one returned from Get-DbaLogin



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-NoClobber [<Switch>]

Do not overwrite file



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-NoPrefix [<Switch>]

Do not include a Prefix



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-Passthru [<Switch>]

Output script to console



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-Path [<String>]

Specifies the directory where the file or files will be exported.

Will default to Path.DbatoolsExport Configuration entry



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



-ScriptingOptionsObject [<Microsoft.SqlServer.Management.Smo.ScriptingOptions>]

An SMO Scripting Object that can be used to customize the output - see New-DbaScriptingOption

Options set in the ScriptingOptionsObject may override other parameter values



Required? false

Position? named

Default value

Accept pipeline input? False

Accept wildcard characters? false



<CommonParameters>

This cmdlet supports the common parameters: Verbose, Debug,

ErrorAction, ErrorVariable, WarningAction, WarningVariable,

OutBuffer, PipelineVariable, and OutVariable. For more information, see

about_CommonParameters (https:/go.microsoft.com/fwlink/?LinkID=113216).



INPUTS



OUTPUTS



NOTES





Tags: Migration, Backup, Export

Author: Chrissy LeMaire (@cl), netnerds.net



Website: https://dbatools.io

Copyright: (c) 2018 by dbatools, licensed under MIT

License: MIT https://opensource.org/licenses/MIT



-------------------------- EXAMPLE 1 --------------------------



PS C:\\>Get-DbaAgentJob -SqlInstance sql2016 | Export-DbaScript



Exports all jobs on the SQL Server sql2016 instance using a trusted connection - automatically determines filename

based on the Path.DbatoolsExport configuration setting, current time and server name.

-------------------------- EXAMPLE 2 --------------------------



PS C:\\>Get-DbaAgentJob -SqlInstance sql2016 | Export-DbaScript -FilePath C:\\temp\\export.sql -Append



Exports all jobs on the SQL Server sql2016 instance using a trusted connection - Will append the output to the

file C:\\temp\\export.sql if it already exists

Inclusion of Batch Separator in script depends on the configuration s not include Batch Separator and will not

compile

-------------------------- EXAMPLE 3 --------------------------



PS C:\\>Get-DbaDbTable -SqlInstance sql2016 -Database MyDatabase -Table 'dbo.Table1', 'dbo.Table2' -SqlCredential

sqladmin | Export-DbaScript -FilePath C:\\temp\\export.sql



Exports only script for 'dbo.Table1' and 'dbo.Table2' in MyDatabase to C:temp\\export.sql and uses the SQL login

"sqladmin" to login to sql2016

-------------------------- EXAMPLE 4 --------------------------



PS C:\\>Get-DbaAgentJob -SqlInstance sql2016 -Job syspolicy_purge_history, 'Hourly Log Backups' -SqlCredential

sqladmin | Export-DbaScript -FilePath C:\\temp\\export.sql -NoPrefix



Exports only syspolicy_purge_history and 'Hourly Log Backups' to C:temp\\export.sql and uses the SQL login

"sqladmin" to login to sql2016

Suppress the output of a Prefix

-------------------------- EXAMPLE 5 --------------------------



PS C:\\>$options = New-DbaScriptingOption



PS C:\\> $options.ScriptSchema = $true

PS C:\\> $options.IncludeDatabaseContext = $true

PS C:\\> $options.IncludeHeaders = $false

PS C:\\> $Options.NoCommandTerminator = $false

PS C:\\> $Options.ScriptBatchTerminator = $true

PS C:\\> $Options.AnsiFile = $true

PS C:\\> Get-DbaAgentJob -SqlInstance sql2016 -Job syspolicy_purge_history, 'Hourly Log Backups' -SqlCredential

sqladmin | Export-DbaScript -FilePath C:\\temp\\export.sql -ScriptingOptionsObject $options



Exports only syspolicy_purge_history and 'Hourly Log Backups' to C:temp\\export.sql and uses the SQL login

"sqladmin" to login to sql2016

Uses Scripting options to ensure Batch Terminator is set

-------------------------- EXAMPLE 6 --------------------------



PS C:\\>Get-DbaAgentJob -SqlInstance sql2014 | Export-DbaScript -Passthru | ForEach-Object {

$_.Replace('sql2014','sql2016') } | Set-Content -Path C:\\temp\\export.sql



Exports jobs and replaces all instances of the servername "sql2014" with "sql2016" then writes to

C:\\temp\\export.sql

-------------------------- EXAMPLE 7 --------------------------



PS C:\\>$options = New-DbaScriptingOption



PS C:\\> $options.ScriptSchema = $true

PS C:\\> $options.IncludeDatabaseContext = $true

PS C:\\> $options.IncludeHeaders = $false

PS C:\\> $Options.NoCommandTerminator = $false

PS C:\\> $Options.ScriptBatchTerminator = $true

PS C:\\> $Options.AnsiFile = $true

PS C:\\> $Databases = Get-DbaDatabase -SqlInstance sql2016 -ExcludeDatabase master, model, msdb, tempdb

PS C:\\> foreach ($db in $Databases) {

>> Export-DbaScript -InputObject $db -FilePath C:\\temp\\export.sql -Append -Encoding UTF8

-ScriptingOptionsObject $options -NoPrefix

>> }



Exports Script for each database on sql2016 excluding system databases

Uses Scripting options to ensure Batch Terminator is set

Will append the output to the file C:\\temp\\export.sql if it already exists



RELATED LINKS

https://dbatools.io/Export-DbaScript