< Back
Export-DbaScript
Post
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
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