Импортируйте модуль SQLPS и используйте его для резервного копирования и восстановления базы данных на другом сервере.

Я запускаю сценарий PS с клиентского компьютера (Win7), на котором не установлен SQLPS (Ms SQL Server Database Engine).

Из-за этого я делаю это через импорт удаленного ps-сеанса:

  1. Создать удаленную PS-сессию на SQL Server

$ sourceSQLRemoteSession = New-PSSession -ComputerName $ SQLServerHostname -Подтверждение аутентификации -Credential $PSOCredentialObject

  1. Импортируйте модуль SQLPS

Import-PSSession -Session $sourceSQLRemoteSession -Module SQLPS -DisableNameChecking

  1. Запустите SQL Backup

Backup-SqlDatabase -ServerInstance "destinationSQL \ SQLInstance" -Database "blabla_db" -BackupFile "c: \ blabla.bak" -Credential $PSOCredentialObject

Дело в том, что если мне нужно восстановить БД на другом сервере баз данных SQL, необходимо, чтобы я использовал объекты "RelocateFile", например:

$RelocateData = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("uat_project1_db", "c:\SQLDATA\blabla.mdf")
$RelocateLog = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("uat_project1_db_Log", "c:\SQLDATA\blabla.ldf")
Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.trn" -RelocateFile @($RelocateData,$RelocateLog)

И когда я запускаю новый объект, он, кажется, не нравится:

Ошибка:

New-Object : Cannot find type [Microsoft.SqlServer.Management.Smo.RelocateFile]: verify that the assembly containing this type is loaded.At line:1 char:17
+ ... ocateData = New-Object Microsoft.SqlServer.Management.Smo.RelocateFil ...
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo         : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

Какой лучший способ подойти к этому?

Спасибо

1 ответ

Ваш лучший подход будет использовать dbaTools. Проверьте это! Вы можете установить его из галереи PowerShell, хотя, если вы используете Windows 7, вам может потребоваться обновить PowerShell до версии 3 или выше (перейдите на версию 5!), Чтобы использовать галерею PowerShell.

dbaTools имеет единственную команду для резервного копирования и восстановления БД.

Вот пример из их документации:

Copy-DbaDatabase -Source sqlserver2014a -Destination sqlcluster -Exclude Northwind, pubs, AdventureWorks -BackupRestore -NetworkShare \\\\fileshare\sql\migration

надеюсь, это поможет

Другие вопросы по тегам