Использовать командлет Backup-SqlDatabase с проверкой подлинности SQL Server
Есть ли способ вызвать командлет Backup-SqlDatabase, но подключить его к SQL Server 2012 с учетными данными SQL Server?
В данный момент я использую следующую команду:
Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"
Но это зависит от пользователя, под которым он вызывается,и по умолчанию используется проверка подлинности Windows.
2 ответа:
Резервной копии-sqldatabase командлет поддерживает параметр Credential. Если вы посмотрите справку для командлета, то там даже есть пример (из справки 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