2016-06-10 2 views
2

EDIT:Powershell: резервного копирования Sqldatabase не удается разрешить путь

я понял, что мне нужно было указать ServerInstance а:

Backup-SqlDatabase -ServerInstance [ServerName] -Database [DBName] -BackupFile "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Copy.bak" 

ОРИГИНАЛЬНЫЙ ПОСТ:

Я пытаюсь резервное копирование базы данных с помощью командлета Backup-Sqldatabase. Это сценарий, я пытаюсь запустить:

Backup-SqlDatabase -Database "LokalUdvikling" -CompressionOption "On" -CopyOnly -Path “C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA" -BackUpFile "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Copy.bak" 

Это приводит к ошибке:

Backup-SqlDatabase : Failed to resolve the path ‘C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL’ to an object of type 'Microsoft.S 
qlServer.Management.Smo.Server'. Either set your location to the proper context, or use the -Path parameter to specify the location. 
At line:1 char:1 
+ Backup-SqlDatabase 
+ ~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (C:\Program File...SQLSERVER\MSSQL:String) [Backup-SqlDatabase], SqlPowerShellContextException 
    + FullyQualifiedErrorId : ContextError,Microsoft.SqlServer.Management.PowerShell.BackupSqlDatabaseCommand 

Путь, где файлы базы данных находятся. Что я делаю не так?

Я действительно надеюсь, что кто-то может помочь/уточнить вещи :)

ответ

0

попробовать некоторые вещи, как это:

Function Invoke-SQLBackup { 

[CmdletBinding()] 
param(
    [Parameter(Mandatory=$true)] 
    [String] $ServerInstance, 

    [Parameter(Mandatory=$true)] 
    [String] $DatabaseName, 

    [Parameter(Mandatory=$true)] 
    [String] $BackupFile 

    ) 

if (Get-Module -ListAvailable -Name SQLPS) 
    { 
     Import-Module SQLPS -Force 

      Backup-SqlDatabase -ServerInstance $ServerInstance -Database $DatabaseName -BackupFile $BackupFile -Verbose 
    } 

ELSE 

    { 
     Write-Output "SQLPS Module not Installed. Please install and try again." 
    } 
} 

я написал и выполнил выше в моей тестовой среде и резервное копирование завершено без проблем.

Синтаксис для запуска и вывод будет выглядеть примерно следующим образом:

PS SQLSERVER:\> Invoke-SQLBackup -ServerInstance 'SERVERNAME\INSTANCENAME' -DatabaseName 'TestDatabase' -BackupFile 'C:\SomePath\Filename.bak' 
    WARNING: The names of some imported commands from the module 'SQLPS' include unapproved verbs that might make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of approved verbs, type Get-Verb. 
    VERBOSE: Performing the operation "Backup-SqlDatabase" on target "[SERVERNAME\INSTANCENAME]". 
    VERBOSE: BACKUP DATABASE [KB] TO DISK = N'C:\SomePath\FileName.bak' WITH NOFORMAT, NOINIT, NOSKIP, REWIND, NOUNLOAD, STATS = 10 
    VERBOSE: 10 percent processed. 
    VERBOSE: 21 percent processed. 
    VERBOSE: 32 percent processed. 
    VERBOSE: 40 percent processed. 
    VERBOSE: 51 percent processed. 
    VERBOSE: 61 percent processed. 
    VERBOSE: 72 percent processed. 
    VERBOSE: 80 percent processed. 
    VERBOSE: 91 percent processed. 
    VERBOSE: Processed 296 pages for database 'DatabaseTest', file 'DatabaseTest' on file 4. 
    VERBOSE: 100 percent processed. 
    VERBOSE: Processed 2 pages for database 'DatabaseTest', file 'DatabaseTest_log' on file 4. 
    VERBOSE: BACKUP DATABASE successfully processed 298 pages in 0.217 seconds (10.728 MB/sec). 

Поскольку вы пытаетесь сохранить по умолчанию SQL папки в файлах программа убедитесь, что вы запускаете скрипт в качестве учетной записи, имеющую доступ к напишите в этом месте. Например, учетная запись администратора или если у вас есть учетная запись службы для резервного копирования, любой из них будет работать. У учетной записи администратора должен быть доступ по умолчанию к папке файлов программ, при условии, что разрешения не были изменены.

Надеюсь, это поможет.

Смежные вопросы