我有以下功能:
Function Backup-SQLDatabase { #MP-RestoreDatabase
Param(
[Parameter(Mandatory)]
[String]$Server,
[Parameter(Mandatory)]
[String]$Database,
[Parameter(Mandatory)]
[String]$BackupFile,
[Parameter(DontShow)]
[String]$SQLScriptPath = "$($PSScriptRoot)\SQLFiles\"
)
Import-Module SQLPS
Invoke-Sqlcmd -ErrorLevel 1 -InputFile "$($SQLScriptPath)BackupDatabase.sql" `
-Variable DBName=$Name, BackupLocation=$BackupFile `
-ServerInstance $server `
-ErrorAction Stop
}
调用此 SQL 脚本:
use master
go
Declare @DBName varchar(max)
Declare @BackupLocation varchar(max)
Declare @sql nvarchar(max)
set @DBName = '$(DBName)'
set @BackupLocation = '$(BackupLocation)'
SET @sql = N'BACKUP DATABASE ['+ @DBName + '] TO DISK = N''' + @BackupLocation + ''' WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N''' + @DBName + '-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10;'
EXEC sp_executesql @sql
但是当我调用它时,我收到错误
用于为 Invoke-Sqlcmd cmdlet 定义新变量的格式无效。
我传入的值是:
- 数据库名称:uat.test.co.uk
- 服务器实例:MSGUXXXXXX01
- 备份路径:\\mstXXXXX01.XXXXX.local\SQL_Backups_Temp\ScriptBackups\20170907083425-uat.test.co.uk.bak
我觉得这里缺少一些非常明显的东西,但是看了一个小时后,我被难住了。