Поделиться через


Перемещение баз данных сервера отчетов на другой компьютер (собственный режим SSRS)

Область применения: собственный режим служб SQL Server Reporting Services (SSRS)

Базы данных сервера отчетов, используемые при установке SQL Server, можно переместить в экземпляр, который находится на другом компьютере.

SQL Server предоставляет несколько подходов для перемещения баз данных:

  • Отсоединение и присоединение. Этот подход обеспечивает самый простой способ перемещения баз данных сервера отчетов, но при отключении баз данных необходимо отключить сервер отчетов.
  • Резервное копирование и восстановление. Этот подход сводит к минимуму нарушения работы службы, но для выполнения операций необходимо выполнить команды Transact-SQL (T-SQL).
  • копирование. При использовании мастера копирования базы данных не рекомендуется копировать базу данных. Он не сохраняет параметры разрешений в базе данных.

В этой статье показано, как использовать подход отсоединения и подключения, а также подход к резервному копированию и восстановлению.

Необходимые компоненты

  • Настроенный сервер отчетов в собственном режиме, используемый в установке SQL Server.
  • Экземпляр SQL Server на другом компьютере.

Подготовка к перемещению баз данных

При перемещении баз данных сервера отчетов следует учитывать следующие моменты:

  • Необходимо переместить или скопировать сервер отчетов и базы данных reportservertempdb вместе. Для установки SSRS требуется обе базы данных.
  • Имя временной базы данных должно совпадать с именем базы данных сервера отчетов-источника, но с суффиксом tempdb .
  • Перемещение базы данных не изменяет запланированные операции, которые в настоящее время определены для элементов сервера отчетов.
    • Расписания создаются повторно при первом перезапуске службы сервера отчетов.
    • Задания агента SQL Server, используемые для активации расписания, создаются повторно на новом экземпляре базы данных. Вам не нужно перемещать задания на новый компьютер, но может потребоваться удалить задания, которые больше не используются на текущем компьютере.
    • Подписки, кэшированные отчеты и моментальные снимки сохраняются в перемещенной базе данных. Если моментальный снимок не выбирает обновленные данные после перемещения базы данных, снимите параметры моментального снимка. Затем нажмите кнопку "Применить" , чтобы сохранить изменения, повторно создать расписание и снова нажмите кнопку "Применить ", чтобы сохранить изменения.
    • Временный отчет и данные сеанса пользователя, хранящиеся во временной базе данных, сохраняются при перемещении этой базы данных.

Внимание

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

Отключение и присоединение баз данных сервера отчетов

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

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

Чтобы использовать подход отсоединения и присоединения, выполните действия, описанные в следующих разделах.

Отключение баз данных

  1. Откройте диспетчер конфигурации сервера отчетов.

  2. Используйте страницу "Ключи шифрования", чтобы создать резервную копию ключей шифрования для базы данных сервера отчетов, которую требуется переместить.

  3. Чтобы остановить службу сервера отчетов, используйте страницу состояния сервера отчетов.

  4. Откройте СРЕДУ SQL Server Management Studio и подключитесь к экземпляру SQL Server, на котором размещены базы данных сервера отчетов.

  5. Щелкните правой кнопкой мыши базу данных сервера отчетов, выберите "Задачи" и выберите " Отсоединить". Повторите этот шаг для временной базы данных сервера отчетов.

Присоединение баз данных

  1. Найдите .mdf и LDF-файлы для текущего экземпляра SQL Server. Они находятся в папке "Данные".

    Снимок экрана: проводник. В папке данных .mdf и LDF-файлы выделены для базы данных сервера отчетов и временной базы данных.

  2. Скопируйте или переместите .mdf и LDF-файлы в папку данных экземпляра SQL Server, который требуется использовать. Так как вы перемещаете две базы данных, убедитесь, что вы перемещаете или копируете все четыре файла.

  3. В SQL Server Management Studio откройте подключение к новому экземпляру SQL Server, в котором размещаются базы данных сервера отчетов.

  4. Щелкните правой кнопкой мыши узел "Базы данных " и выберите "Подключить".

  5. Выберите "Добавить ", чтобы выбрать базу данных сервера отчетов .mdf и LDF-файлы, которые требуется присоединить. Повторите этот шаг для временной базы данных сервера отчетов.

Завершение настройки

  1. Убедитесь, что подключенные базы данных имеют роль RSExecRole . Необходимо настроить RSExecRole для выбора, вставки, обновления, удаления и ссылки разрешений на таблицы базы данных сервера отчетов и выполнения разрешений на хранимые процедуры. Дополнительные сведения см. в разделе Создание RSExecRole.

  2. Запустите диспетчер конфигурации сервера отчетов и откройте подключение к серверу отчетов.

  3. На странице "База данных" выберите новый экземпляр SQL Server и нажмите кнопку "Подключить".

  4. Выберите только что перенесенную базу данных сервера отчетов и нажмите кнопку "Применить".

  5. На странице "Ключи шифрования" щелкните Восстановить. Укажите файл, содержащий резервную копию ключей и пароль для разблокирования этого файла.

  6. Перезапустите службу сервера отчетов.

Резервное копирование и восстановление баз данных сервера отчетов

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

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

Резервное копирование баз данных сервера отчетов с помощью BACKUP и COPY_ONLY

Чтобы создать резервную копию баз данных, откройте SQL Server Management Studio и выполните следующие инструкции в окне запроса. Эти инструкции используют COPY_ONLY аргумент, и они резервируют как базы данных, так и файлы журналов.

Перед выполнением этих инструкций замените <заполнитель папки -path-to-backup> на путь к папке backup текущего экземпляра, например C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP.

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO

-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'

-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\ReportServerLog.bak'

-- Back up the full ReportServer database.
BACKUP DATABASE ReportServer
   TO ReportServerData
   WITH COPY_ONLY

-- Back up the ReportServer log.
BACKUP LOG ReportServer
   TO ReportServerLog
   WITH COPY_ONLY

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO

-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'

-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\ReportServerTempDBLog.bak'

-- Back up the full ReportServerTempDB database.
BACKUP DATABASE ReportServerTempDB
   TO ReportServerTempDBData
   WITH COPY_ONLY

-- Back up the ReportServerTempDB log.
BACKUP LOG ReportServerTempDB
   TO ReportServerTempDBLog
   WITH COPY_ONLY

Использование RESTORE и MOVE для перемещения баз данных сервера отчетов

Чтобы восстановить базы данных, откройте SQL Server Management Studio и выполните следующие инструкции в окне запроса.

В следующих инструкциях:

  • Операции RESTORE для файлов базы данных и журналов выполняются отдельно.

  • Аргумент MOVE предоставляет способ указать путь. Этот аргумент использует логическое имя файла данных. Чтобы найти логическое имя, выполните следующую инструкцию. Сначала замените <заполнитель файла резервного копирования> базы данных сервера отчетов путем к файлу резервного копирования базы данных сервера отчетов, например C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Вы можете найти логическое имя в столбце LogicalName выходных данных.

    Снимок экрана: инструкция RESTORE FILELISTONLY в окне запроса SQL Server Management Studio. В выходных данных выделен столбец LogicalName.

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

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Аргумент FILE позволяет указать положение файла журнала для восстановления. Чтобы найти позицию файла, выполните следующую инструкцию. Сначала замените <заполнитель файла резервного копирования> базы данных сервера отчетов путем к файлу резервного копирования базы данных сервера отчетов, например C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Расположение файла можно найти в столбце "Позиция " выходных данных.

    Снимок экрана: инструкция RESTORE HEADERONLY в окне запроса SQL Server Management Studio. В выходных данных выделен столбец

    Вы можете выполнить аналогичную инструкцию, чтобы найти расположение файла временной базы данных:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Аргумент NORECOVERY выполняет начальное восстановление. Этот аргумент сохраняет базу данных в RESTORING состоянии, что позволяет просматривать резервные копии журналов, чтобы определить, какой из них необходимо восстановить.

  • Последний шаг повторяет RESTORE операцию с аргументом RECOVERY .

Перед выполнением этих инструкций замените следующие заполнители соответствующими значениями:

Заполнитель Описание: Пример
<папка path-to-backup> Путь к папке backup текущего экземпляра C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<папка path-to-new-data-folder> Путь к папке Данных нового экземпляра C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<имя report-server-database-logical-name> Логическое имя базы данных сервера отчетов ReportServer
<report-server-database-log-logical-name> Логическое имя журнала базы данных сервера отчетов ReportServer_log
<report-server-database-log-file-position> Положение файла файла журнала базы данных сервера отчетов 2
<временное-логическое имя базы данных> Логическое имя временной базы данных ReportServerTempDB
<временное имя-database-log-logical-name> Логическое имя временного журнала базы данных ReportServerTempDB_log
<временная база данных-log-file-position> Позиция файла временного файла журнала базы данных 2
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
   WITH RECOVERY
GO

-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
   WITH RECOVERY
GO

Настройка подключения к базе данных сервера отчетов

  1. Запустите диспетчер конфигурации сервера отчетов и откройте подключение к серверу отчетов.

  2. На странице "База данных" нажмите кнопку Изменить базу данных.

  3. На странице "Изменить базу данных" выберите существующую базу данных сервера отчетов и нажмите кнопку "Далее".

  4. В поле "Имя сервера" введите экземпляр SQL Server, на котором размещена база данных сервера отчетов, а затем выберите "Проверить подключение".

  5. После проверки подключения нажмите кнопку "Далее".

  6. Для базы данных сервера отчетов выберите базу данных сервера отчетов, которую вы хотите использовать, и нажмите кнопку "Далее".

  7. В разделе "Учетные данные" укажите учетные данные, которые сервер отчетов использует для подключения к базе данных сервера отчетов, а затем нажмите кнопку "Далее".

  8. Нажмите кнопку "Далее", а затем нажмите кнопку "Готово".

Примечание.

В установке SSRS экземпляр SQL Server ядро СУБД должен включать роль RSExecRole. Создание ролей, регистрация входа и назначения ролей возникают при использовании Диспетчера конфигурации сервера отчетов для установки подключения к базе данных сервера отчетов. Если вы используете альтернативные подходы, например служебную программу командной строки rsconfig.exe, сервер отчетов не работает. В этом случае может потребоваться написать код инструментария управления Windows (WMI), чтобы сделать сервер отчетов доступным. Дополнительные сведения см. в разделе "Доступ к поставщику WMI служб Reporting Services".