1

Этот код прекрасно работает на локальном экземпляре SQL Server Express:отчеты резервного копирования SMO не удается открыть устройство резервного копирования (который является файлом), сообщение 3201

Dim thisSMOBackup As New Backup() 
With thisSMOBackup 
    .Database = singleDatabase.Name 'This contains the database name 
    .Action = BackupActionType.Database 
    .Devices.AddDevice(DatabaseFileName, DeviceType.File) 
    .Incremental = False 
    .LogTruncation = BackupTruncateLogType.Truncate 
End With 
Try 
    thisSMOBackup.SqlBackup(thisServer) 'thisServer is setup w/ valid connection string and reads back data OK from the SQL server 
    System.IO.File.AppendAllText(logfileName, singleDatabase.Name & " - backed up") 
Catch ex As Exception 
    System.IO.File.AppendAllText(logfileName, singleDatabase.Name & " - " & ex.InnerException.Message & vbCrLf) 
End Try 

Когда я применяю тот же код, общий хостинг SQL Server, он дает следующее сообщение об ошибке внутреннего исключения:

Не удается открыть устройство резервного копирования 'D: \ aFolderName \ aBackupName \ theDatabaseName.bak'. Ошибка операционной системы 3 (система не может найти указанный путь). BACKUP DATABASE заканчивается аномально.
Сообщение #: 3201

Там, кажется, разные способы подключения к серверам. Для экземпляра SQL Server Express я использую свойство .ServerInstance, для размещенного сервера я использую свойство .ConnectionString. Это имеет какое-либо отношение к тому, как функционирует код SMO?

Я читал, что общие серверы хостинга SQL могут иметь ограничения, которые трудно преодолеть, но прежде чем я сдаюсь, я хотел попросить ввода.

Ошибка сама по себе предполагает, что SMO не может найти местоположение для записи файла, но оно есть, и я установил безопасность для папки «Everyone» с «Full Control». Но тогда ошибки, похоже, не всегда означают то, что они говорят. Я задавался вопросом, есть ли какие-то другие параметры, которые мне нужно настроить для этой операции, чтобы преуспеть или в других местах.

+0

Думаю, что получаю. Означает ли это, когда мое местное приложение обращается к SMO, SMO фактически работает на удаленном SQL-сервере, а не на моей локальной машине? Что я просто взаимодействую с этим сервером, и он там работает? Предполагая, что, похоже, нет способа получить резервные копии SMO, отправленные локально, но я все равно спрошу, если я пропущу что-то очевидное; есть ли какие-либо методы, которые я мог бы использовать для подталкивания резервных копий на мою машину? У хостинга есть некоторые возможности резервного копирования, но они ручные, и я пытался сделать это в локальном коде. – Alan

+0

Нет, не так много ... Как и все остальные, я очень стараюсь удержать людей от моих машин! ** Но поскольку я всего лишь кодер среднего уровня, я нахожу, что часто известны или проверенные методы решения проблем как это, что я никогда не подвергался воздействию; но, видимо, не эта проблема.Я потрачу некоторое время, пытаясь понять, могу ли я использовать службы ftp хостинг-провайдера в случае, если это может решить проблему так, как я надеялся. Приятно сфокусированная помощь. Спасибо! – Alan

ответ

1

Когда вы пытаетесь создать резервную копию в вашей среде виртуального хостинга, резервного копирования файл записывается в файловой системе этой машины удаленного сервера (НЕ свой собственный, местный D: привод!), Где ваш Работает SQL Server.

Скорее всего, учетная запись пользователя, которая запускает SQL Server удаленно, просто не имеет права на запись в этот каталог.

Также: это хорошая вещь! В конце концов, вам не нужна машина удаленного сервера, которую вы не знаете, и у вас нет контроля над тем, чтобы иметь прямой доступ на запись к вашей собственной локальной машине - теперь, не так ли?

Что вы могли делать (особенно в корпоративной среде) является запись резервных копий на пути UNC (\\server\share\path), где и машина удаленного SQL Server имеет доступ записи к, и к которым у вас есть по крайней мере, доступ на чтение, чтобы вы могли туда пойти и скопировать файлы .bak на ваш локальный компьютер по мере необходимости. С коммерческой хостинговой компанией этот вариант очень редко существует, однако ....