Я получаю сообщение об ошибке «Произошла ошибка во время обработки отчета. Не удалось выполнить запрос для набора данных [имя sprocs]» при запуске отчета SSRS.
Хранимые процедуры для этого отчета могут выполняться без ошибок на сервере SQL. У него есть запрос CTE, который использует связанный сервер для извлечения данных с другого сервера базы данных.
В журнале Windows нет ошибки, указывающей на эту проблему.
Я предполагаю, что это связано с тем, что связанный сервер сбрасывает соединение, но я не могу доказать, что это так, потому что я не могу найти ни одной ошибки, которая указывает на это, а также отлично работает. А также часто открывая отчет с указанной выше ошибкой из SSRS, чтобы проверить, работает ли он, отключил сервер отчетов.
Может ли кто-нибудь помочь устранить эту проблему?
Профилировщик SQL не помог устранить проблему. Я смог протестировать и запустить отчет на нашем промежуточном сервере SSRS без ошибок. Мне удалось запустить отчет с теми же учетными данными источника данных из производственной среды, проблема аутентификации маловероятна.
Это ошибка, обнаруженная в журнале ReportServer.
ОШИБКА: выброс исключения Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: сбой при выполнении запроса для набора данных '[sprocname]'.,; Информация: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: сбой при выполнении запроса для набора данных '[имя_спрока]'. ---> System.Data.SqlClient.SqlException: поставщик именованных каналов: на другом конце канала нет процессов.
Однако наш системный администратор сравнил конфигурацию SQL Server и обнаружил, что клиентские протоколы упорядочены по-разному в промежуточной и рабочей среде. Мы изменили порядок в производственной среде, чтобы он соответствовал промежуточной передаче, на следующий порядок: общая память, TCP / IP и именованные каналы вместо именованных каналов, предшествующих TCP / IP. Это устранило проблему, и пока отчет выполняется без ошибок.
Используйте профилировщик SQL, чтобы увидеть, что на самом деле отправляется и возвращается с сервера SQL. Используя журнал трассировки, вы сможете определить причину.
Работает ли служба отчетов на том же сервере, на котором вы тестировали хранимые процедуры? Вы запускаете отчет непосредственно из интерфейса SSRS или он встроен в другое приложение?
Может быть проблема с аутентификацией, проблема с брандмауэром, проблема с двойным прыжком керберос. Я предполагаю, что вы достигнете только одного из серверов ИЛИ вы достигнете обоих, но не удается войти на связанный сервер.
Насколько мне известно, это проблема с аутентификацией. Проверьте учетные данные сервера отчетов, а также учетные данные и разрешения связанного сервера.