dbatools is a free PowerShell module with over 300 SQL Server administration, best practice and migration commands included.

Please note that documentation and command names may be out of date while we work furiously towards 1.0


Invoke-DbaLogShipping helps to easily set up log shipping for one or more databases.

This function will make a lot of decisions for you assuming you want default values like a daily interval for the schedules with a 15 minute interval on the day.
There are some settings that cannot be made by the function and they need to be prepared before the function is executed.

The following settings need to be made before log shipping can be initiated:
– Backup destination (the folder and the privileges)
– Copy destination (the folder and the privileges)

  • Privileges
    Make sure your agent service on both the primary and the secondary instance is an Active Directory account.
    Also have the credentials ready to set the folder permissions

** Network share
The backup destination needs to be shared and have the share privileges of FULL CONTROL to Everyone.

** NTFS permissions
The backup destination must have at least read/write permissions for the primary instance agent account.
The backup destination must have at least read permissions for the secondary instance agent account.
The copy destination must have at least read/write permission for the secondary instance agent acount.




Sets up log shipping for database “db1” with the backup path to a network share allowing local backups.
It creates daily schedules for the backup, copy and restore job with all the defaults to be executed every 15 minutes daily.
The secondary database will be called “db1_LS”.

Invoke-DbaLogShipping -SourceSqlInstance sql1 -DestinationSqlInstance sql2 -Database db1 -BackupNetworkPath \sql1\logshipping -BackupLocalPath D:\Data\logshipping -BackupScheduleFrequencyType daily -BackupScheduleFrequencyInterval 1 -CompressBackup -CopyScheduleFrequencyType daily -CopyScheduleFrequencyInterval 1 -GenerateFullBackup -RestoreScheduleFrequencyType daily -RestoreScheduleFrequencyInterval 1 -SecondaryDatabaseSuffix DR -CopyDestinationFolder \sql2\logshippingdest -Force

Sets up log shipping with all defaults except that a backup file is generated.
The script will show a message that the copy destination has not been supplied and asks if you want to use the default which would be the backup directory of the secondary server with the folder “logshipping” i.e. “D:\SQLBackup\Logshipping”.

Invoke-DbaLogShipping -SourceSqlInstance sql1 -DestinationSqlInstance sql2 -Database db1 -BackupNetworkPath \sql1\logshipping -GenerateFullBackup -Force

Sets up log shipping for a specific time by option to backup, copy and restore schedule parameter.

Invoke-DbaLogShipping -SourceSqlInstance $SourceSqlInstance -DestinationSqlInstance $DestinationSqlInstance -Database $Database -BackupNetworkPath $BackupNetworkPath -BackupLocalPath $BackupLocalPath -BackupScheduleFrequencyType Daily -CompressBackup -CopyScheduleFrequencyType Daily -GenerateFullBackup -RestoreScheduleFrequencyInterval EveryDay -CopyDestinationFolder $CopyDestinationFolder -RestoreScheduleFrequencyType Daily -RestoreScheduleFrequencySubdayType Time -RestoreScheduleStartTime 230000


This command was created by Sander Stad. You can find Sander on Twitter and his blog.


From PowerShell, execute Get-Help Invoke-DbaLogShipping -Detailed for more information on this function.

Source Code

Want to see the source code? View Invoke-DbaLogShipping.ps1 on GitHub

Related commands