繁体   English   中英

导入SQLPS模块并使用它来将数据库备份和还原到其他服务器

[英]Import SQLPS module and use it to backup and restore DB to different server

我正在从未安装SQLPS(MS SQL Server数据库引擎)的客户端计算机(Win7)运行PS脚本。

因此,我通过导入远程ps会话来实现:

  1. 创建到SQL Server的远程PS会话

$ sourceSQLRemoteSession = New-PSSession -ComputerName $ SQLServerHostname-身份验证-Credential $ PSOCredentialObject

  1. 导入SQLPS模块

Import-PSSession-会话$ sourceSQLRemoteSession-模块SQLPS -DisableNameChecking

  1. 运行SQL备份

Backup-SqlDatabase -ServerInstance“ destinationSQL \\ SQLInstance”-数据库“ blabla_db” -BackupFile“ c:\\ blabla.bak”-凭据$ 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

解决此问题的最佳方法是什么?

谢谢

最好的方法是使用dbaTools 看看这个! 您可以从PowerShell库中进行安装,尽管如果您正在运行Windows 7,则可能必须将PowerShell升级到v3或更高版本(适用于v5! )才能使用PowerShell库。

dbaTools有一个用于备份和还原数据库的命令。

这是他们的文档中的一个示例:

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

希望能有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM