Этот код прекрасно работает на локальном экземпляре 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». Но тогда ошибки, похоже, не всегда означают то, что они говорят. Я задавался вопросом, есть ли какие-то другие параметры, которые мне нужно настроить для этой операции, чтобы преуспеть или в других местах.
Думаю, что получаю. Означает ли это, когда мое местное приложение обращается к SMO, SMO фактически работает на удаленном SQL-сервере, а не на моей локальной машине? Что я просто взаимодействую с этим сервером, и он там работает? Предполагая, что, похоже, нет способа получить резервные копии SMO, отправленные локально, но я все равно спрошу, если я пропущу что-то очевидное; есть ли какие-либо методы, которые я мог бы использовать для подталкивания резервных копий на мою машину? У хостинга есть некоторые возможности резервного копирования, но они ручные, и я пытался сделать это в локальном коде. – Alan
Нет, не так много ... Как и все остальные, я очень стараюсь удержать людей от моих машин! ** Но поскольку я всего лишь кодер среднего уровня, я нахожу, что часто известны или проверенные методы решения проблем как это, что я никогда не подвергался воздействию; но, видимо, не эта проблема.Я потрачу некоторое время, пытаясь понять, могу ли я использовать службы ftp хостинг-провайдера в случае, если это может решить проблему так, как я надеялся. Приятно сфокусированная помощь. Спасибо! – Alan