commands

^

Copy-DbaLinkedServer

Author Chrissy LeMaire (@cl), netnerds.net
Availability Windows, Linux, macOS

 

Want to see the source code for this command? Check out Copy-DbaLinkedServer on GitHub.
Want to see the Bill Of Health for this command? Check out Copy-DbaLinkedServer.

Synopsis

Migrates linked servers and their authentication credentials from one SQL Server instance to another

Description

Migrates SQL Server linked servers including all authentication credentials and connection settings from a source instance to one or more destination instances. The function preserves usernames and passwords by using password decryption techniques, eliminating the need to manually recreate linked server configurations and re-enter sensitive credentials.

This is particularly useful during server migrations, disaster recovery scenarios, or when consolidating environments where maintaining external data connections is critical. The function handles various provider types and can optionally upgrade older SQL Client providers to current versions during migration.

Credit: Password decryption techniques provided by Antti Rantasaari (NetSPI, 2014) - https://blog.netspi.com/decrypting-mssql-database-link-server-passwords/

Syntax

Copy-DbaLinkedServer
    [-Source] <DbaInstanceParameter>
    [[-SourceSqlCredential] <PSCredential>]
    [-Destination] <DbaInstanceParameter[]>
    [[-DestinationSqlCredential] <PSCredential>]
    [[-LinkedServer] <Object[]>]
    [[-ExcludeLinkedServer] <Object[]>]
    [-UpgradeSqlClient]
    [-ExcludePassword]
    [-Force]
    [-EnableException]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

 

Examples

 

Example: 1
PS C:\> Copy-DbaLinkedServer -Source sqlserver2014a -Destination sqlcluster

Copies all SQL Server Linked Servers on sqlserver2014a to sqlcluster. If Linked Server exists on destination, it will be skipped.

Example: 2
PS C:\> Copy-DbaLinkedServer -Source sqlserver2014a -Destination sqlcluster -LinkedServer SQL2K5,SQL2k -Force

Copies over two SQL Server Linked Servers (SQL2K and SQL2K2) from sqlserver to sqlcluster. If the credential already exists on the destination, it will be dropped.

Required Parameters

-Source

Source SQL Server (2005 and above). You must have sysadmin access to both SQL Server and Windows.

Alias
Required True
Pipeline false
Default Value
-Destination

Destination SQL Server (2005 and above). You must have sysadmin access to both SQL Server and Windows.

Alias
Required True
Pipeline false
Default Value

Optional Parameters

-SourceSqlCredential

Login to the target instance using alternative credentials. Accepts PowerShell credentials (Get-Credential).
Windows Authentication, SQL Server Authentication, Active Directory - Password, and Active Directory - Integrated are all supported.
For MFA support, please use Connect-DbaInstance.

Alias
Required False
Pipeline false
Default Value
-DestinationSqlCredential

Login to the target instance using alternative credentials. Accepts PowerShell credentials (Get-Credential).
Windows Authentication, SQL Server Authentication, Active Directory - Password, and Active Directory - Integrated are all supported.
For MFA support, please use Connect-DbaInstance.

Alias
Required False
Pipeline false
Default Value
-LinkedServer

Specifies which linked servers to copy from the source instance. Accepts an array of linked server names.
Use this when you only need to migrate specific linked servers rather than all of them.
If omitted, all linked servers from the source will be copied to the destination.

Alias
Required False
Pipeline false
Default Value
-ExcludeLinkedServer

Specifies linked servers to skip during the copy operation. Accepts an array of linked server names.
Use this when you want to copy most linked servers but exclude problematic ones or those that shouldn't be migrated.
This parameter is ignored if LinkedServer is specified.

Alias
Required False
Pipeline false
Default Value
-UpgradeSqlClient

Updates older SQL Server Native Client providers (SQLNCLI) to the newest version available on the destination server.
Use this when migrating from older SQL Server versions to ensure linked servers use current client libraries.
The function automatically detects and upgrades to the highest numbered SQLNCLI provider found on the destination.

Alias
Required False
Pipeline false
Default Value False
-ExcludePassword

Copies linked server definitions without migrating stored passwords or sensitive authentication data.
Use this in security-conscious environments where password decryption is restricted or when passwords should be manually reset after migration.
Linked servers will be created but authentication credentials will need to be reconfigured.

Alias
Required False
Pipeline false
Default Value False
-Force

Drops and recreates linked servers that already exist on the destination instance.
Use this when you need to overwrite existing linked server configurations with updated settings from the source.
Without this parameter, existing linked servers on the destination are skipped to prevent accidental overwrites.

Alias
Required False
Pipeline false
Default Value False
-EnableException

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.

Alias
Required False
Pipeline false
Default Value False
-WhatIf

Shows what would happen if the command were to run. No actions are actually performed.

Alias wi
Required False
Pipeline false
Default Value
-Confirm

Prompts you for confirmation before executing any changing operations within the command.

Alias cf
Required False
Pipeline false
Default Value