Назад | Перейти на главную страницу

Веб-резервное копирование SQL Server 2016 по URL-адресу

Недавно я установил новый экземпляр Windows Server 2012 R2 с SQL Server 2016 Web Edition и пытаюсь настроить автоматическое резервное копирование в Azure, но безуспешно. Сначала я создал учетную запись хранения в Azure, затем создал подпись общего доступа (SAS), и здесь я начинаю теряться. Отсюда я пробовал:

Я не понимаю, куда идти дальше. Любые идеи?

Два варианта резервного копирования: РЕЗЕРВНОЕ КОПИРОВАНИЕ БД НА URL-адрес С УЧЕТНЫМИ ДАННЫМИ - создает большой двоичный объект, требует учетных данных для использования токена, а не SAS, при создании [Не удается разделить резервные копии на несколько файлов]

РЕЗЕРВНОЕ КОПИРОВАНИЕ БД НА URL [без учетных данных] - создает блоки, требует, чтобы имя учетных данных совпадало с URL-адресом [учетная запись хранения + контейнер], SAS в секрете, [CAN разделяет резервные копии на несколько файлов]

Удаление ведущего символа '?' почти никогда не упоминается и заполняет всех вокруг.

Ошибка операционной системы 50 (для меня на Windows Server 2012 R2; sql server SQL Server 2016) возможна, даже если все правильно: у меня есть задание, которое выполняет резервное копирование dbs в Azure с чередованием файлов - сбой 1 базы данных в пятницу, успешное выполнение того же db без менять что-нибудь в субботу ... только чтобы подлить масла в огонь.

Возможно, именно ваша аутентификация является причиной того, что вы не можете найти контейнеры.

   USE master  
   CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] -- this name must match the container path, start with https and must not contain a trailing forward slash.  
  WITH IDENTITY='SHARED ACCESS SIGNATURE' -- this is a mandatory string and do not change it.   
     , SECRET = 'sharedaccesssignature' –- this is the shared access signature token   
  GO    

Источник: https://docs.microsoft.com/en-us/sql/t-sql/statements/create-credential-transact-sql.

/ * Оставляем это как исторический контекст * / REFER «MSDN: Резервное копирование SQL Server на URL: рекомендации и устранение неполадок»

Я нашел ваш пост, потому что меня тоже поразила ошибка 50, даже после прочтения «MSDN: Учебное пособие: использование службы хранилища BLOB-объектов Microsoft Azure с базами данных SQL Server 2016»

Я думаю, тебе стоит получить доступ http://portal.azure.com а затем войдите в свою подписку Azure. Вы меняете «каталоги» с Пробной на Плату по мере использования в правом верхнем углу экрана ...

Кстати, я думаю, вам может понадобиться общая подпись доступа в SQL 2016, потому что, когда я копирую сценарий SQL 2012 {Backup DB X using CREDENTIAL Y} в экземпляр 2016, он терпит неудачу (ЗАПРЕЩЕНО) НЕСМОТРЯ на то, что они говорят, что вы можете использовать учетные данные ...

Кроме того, ошибка операционной системы 50 (запрос не поддерживается) заставляет меня думать, что сервер 2012 r2 может быть ошибкой ... тестирование в настоящее время на моем ноутбуке (Windows 8) дает такую ​​же ошибку.

Удачи.

Для меня все было правильно, ЗА ИСКЛЮЧЕНИЕМ токена SAS. Маркер SAS НЕ должен начинаться с символа "?" знак вопроса.

Пример токена SAS (секретный ключ / пароль)

sv=2017-01-02&ss=abcd&srt=abc&sp=rwdlacup&se=2027-09-11T05:00:00Z&st=2017-09-11T04:55:00Z&spr=https&sig=randomcharactersandnumbers

У меня была аналогичная проблема (Operating System error 50 (The request is not supported)), и мне помогло использование идентификатора учетной записи хранения и ключа доступа вместо SAS-ключа. Не оптимально во всех случаях, но решила мой случай.

https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/sql-server-backup-to-url#credential

Создание учетных данных:

IF NOT EXISTS  
(SELECT * FROM sys.credentials   
WHERE name = '<mycredentialname>')  
CREATE CREDENTIAL [<mycredentialname>] WITH IDENTITY = '<mystorageaccountname>'  
,SECRET = '<mystorageaccountaccesskey>';

Используя учетные данные:

BACKUP DATABASE AdventureWorks2016  
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2016.bak'   
      WITH CREDENTIAL = '<mycredentialname>'   
     ,COMPRESSION  
     ,STATS = 5;  
GO