Move-Ipam Database

Migrates the IPAM database to a SQL Server database.

Syntax

Move-IpamDatabase
    [-DatabaseServer] <String>
    [-DatabaseName] <String>
    [-DatabasePort] <UInt16>
    -DatabaseAuthType <AuthType>
    [-DatabaseCredential <PSCredential>]
    [-PassThru]
    [-Force]
    [-CimSession <CimSession[]>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

The Move-IpamDatabase cmdlet migrates the IP Address Management (IPAM) database to a Microsoft SQL Server database. You can migrate from Windows Internal Database (WID) or from a SQL Server database. The cmdlet creates a new IPAM schema and copies all data from the existing IPAM database. After the cmdlet completes copying data, it changes IPAM configuration settings to refer to the new database as the IPAM database. If you migrate from WID, the cmdlet renames the existing data and log files by appending a time stamp to the file names.

If the cmdlet cannot complete the migration for any reason, it returns an error and does not change the current database settings.

Verify that you can reach the database server from the IPAM server. Specify whether to connect to the destination server by using the account for the computer that hosts the IPAM server or by using a SQL Server database account. If you specify the IPAM server account, verify that the account has permissions necessary to write to the destination database. If the migration requires a new database, verify that the account has permissions to create and write to the database.

Use the Get-IpamDatabase cmdlet to view database configuration settings.

We recommend that you isolate the IPAM server and shut down all IPAM clients before you migrate a database.

The collation of the source and destination databases should be the same. If the destination database is not present, this cmdlet creates a new database using the default collation for the destination SQL Server. This might cause errors if the default collation of the source SQL database is different. To avoid this, use the following steps to manually create the destination database.

Moving from WID to an external SQL Server

Create the destination database on external SQL Server by using the following command:

CREATE DATABASE \[\<DBName\>\] COLLATE \<DB collation name\> The parameter 'DB collation name' should be specified as SQL_LATIN1_GENERAL_CP1_CI_AS in this case.

Moving from one SQL Server database to another external SQL Server database

Read the collation of the existing database by using the following command:

SELECT collation_name FROM sys.databases WHERE name = N'\<DBName\>'

Create a new database on the destination SQL server by using the following command:

CREATE DATABASE \[\<DBName\>\] COLLATE \<DB collation name\>

Examples

Example 1: Move an IPAM database

This command uses the **Get-IpamDatabase** cmdlet to get the database configuration information. The console displays configuration information, including the type of database, WID. 
PS C:\> Get-IpamDatabase
DatabaseType     : WID

WidSchemaPath    : C:\Windows\System32\IPAM\DataBase

DatabaseServer   :

DatabaseName     : IPAM

DatabasePort     :

DatabaseAuthType : Windows

DatabaseUser     :


This command moves the IPAM data to a database named IpamDB1 on the server named ContosoDB22. The database uses port 1433. The command specifies Windows as the authentication type, so the command uses credentials for the IPAM server. The cmdlet prompts you for confirmation.
PS C:\> Move-IpamDatabase -DatabaseServer "ContosoDB22" -DatabaseName "IpamDB1" -DatabasePort 1433 -DatabaseAuthType Windows
Confirm

This command will migrate IPAM data to the specified MsSql Database. The cmdlet will create a new Ipam Schema, copy the data and configure IPAM to use the new database. Once this migration is completed successfully, you will not be able to revert to using Windows Internal Database. Do you want to continue?

[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y


This command uses the **Get-IpamDatabase** cmdlet to get the database configuration information. The console displays configuration information, including the type of database, WID. The console displays configuration information, including the type of database, now MSSQL. The database now has values for **DatabaseServer**, **DatabaseName**, and **DatabasePort**, as specified in the second command.
PS C:\> Get-IpamDatabase
DatabaseType     : MSSQL

WidSchemaPath    :

DatabaseServer   : ContosoDB22

DatabaseName     : IpamDB1

DatabasePort     : 1433

DatabaseAuthType : Windows

DatabaseUser     :

This example moves an IPAM database to a database named IpamDB1 on a database server named ContosoDB22.

Required Parameters

-DatabaseAuthType

Specifies which type of authentication to use to connect to the computer that runs SQL Server. The acceptable values for this parameter are:

  • SQL. Use the database account. Specify this credential by using the DatabaseCredential parameter.
  • Windows. Use the account for the computer that runs the IPAM server.
Type: AuthType
Parameter Sets: Windows, SQL
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-DatabaseName

Specifies the name of a SQL Server database. The cmdlet migrates the IPAM database to this database. If the database does not exist, IPAM creates a database that has this name on the destination server.

Type: String
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-DatabasePort

Specifies the port that the IPAM server uses to connect to the database server.

Type: UInt16
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-DatabaseServer

Specifies the fully qualified domain name (FQDN) or IP address of the database server. The cmdlet migrates the IPAM database to this server.

Type: String
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

Optional Parameters

-AsJob

Runs the cmdlet as a background job. Use this parameter to run commands that take a long time to complete.

The cmdlet immediately returns an object that represents the job and then displays the command prompt. You can continue to work in the session while the job completes. To manage the job, use the *-Job cmdlets. To get the job results, use the Receive-Job cmdlet.

For more information about Windows PowerShell background jobs, see about_Jobs .

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-CimSession

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Type: CimSession[]
Aliases: Session
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Confirm

Prompts you for confirmation before running the cmdlet.

Type: SwitchParameter
Aliases: cf
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-DatabaseCredential

Specifies credentials, as a PSCredential object, for the computer that runs SQL Server. To obtain a PSCredential object, use the Get-Credential cmdlet. For more information, type Get-Help Get-Credential .

Specify this parameter if you specified a value of SQL for the DatabaseAuthType parameter.

Type: PSCredential
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Force

Forces the command to run without asking for user confirmation.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru

Returns an object representing the item with which you are working. By default, this cmdlet does not generate any output.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ThrottleLimit

Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShell® calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer. The throttle limit applies only to the current cmdlet, not to the session or to the computer.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Type: SwitchParameter
Aliases: wi
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False