Backup-SqlDatabaseコマンドレットを呼び出す方法はありますが、SQLServer資格情報を使用してSQLServer 2012に接続しますか?
私が現在使用しているコマンドは次のとおりです。
Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"
ただし、これは呼び出し元のユーザーに依存し、デフォルトではWindows認証が使用されています。
Backup-sqldatabaseコマンドレットは、Credentialパラメーターをサポートします。コマンドレットのヘルプを見ると、例もあります(help backup-sqldatabase -fullから):
-------------------------- EXAMPLE 4 --------------------------
C:\PS>Backup-SqlDatabase -ServerInstance Computer\Instance -Database MyDB -Credential (Get-Credential sa)
Description
-----------
This command creates a complete database backup of the database 'MyDB', using the sa SQL Server credential. This co
mmand will Prompt you for a password to complete SQL Server authentication.
Backup-SqlDatabase
を実行する前に 仮想ドライブを接続する
$backupFolder = '...'
$additionToName = '...'
$user = 'Username'
$pass = 'Password'
$inst = 'Server\Instance'
$db = 'master'
$file = "$backupFolder${db}_db_$additionToName.bak"
$root = "SQLSERVER:\SQL\$inst"
$drv = 'sqldrive'
$cred = New-Object Management.Automation.PSCredential -ArgumentList $user, $pass
New-PSDrive $drv -PSProvider SqlServer -Root $root -Credential $cred -Scope 1
Set-Location $drv
Backup-SqlDatabase -ServerInstance $inst -Database $db -BackupFile $file
または、 SQLステートメント を介して Invoke-SqlCmd
を実行してデータベースをバックアップすることもできます。
$backupFolder = '...'
$additionToName = '...'
$user = 'Username'
$pass = ConvertTo-SecureString 'Password' -AsPlainText -Force
$inst = 'Server\Instance'
$db = 'master'
$file = "$backupFolder${db}_db_$additionToName.bak"
$sql = @"
USE $db;
GO
BACKUP DATABASE $db TO DISK = '$file';
GO
"@
Invoke-Sqlcmd -Query $sql -ServerInstance $inst –Username $user –Password $pass