Импортируйте модуль SQLPS и используйте его для резервного копирования и восстановления базы данных на другом сервере.
Я запускаю сценарий PS с клиентского компьютера (Win7), на котором не установлен SQLPS (Ms SQL Server Database Engine).
Из-за этого я делаю это через импорт удаленного ps-сеанса:
- Создать удаленную PS-сессию на SQL Server
$ sourceSQLRemoteSession = New-PSSession -ComputerName $ SQLServerHostname -Подтверждение аутентификации -Credential $PSOCredentialObject
- Импортируйте модуль SQLPS
Import-PSSession -Session $sourceSQLRemoteSession -Module SQLPS -DisableNameChecking
- Запустите 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
надеюсь, это поможет