Биты и байты.

Биты и байты.
Показаны сообщения с ярлыком SSRS. Показать все сообщения
Показаны сообщения с ярлыком SSRS. Показать все сообщения

пятница, 22 мая 2015 г.

Подключение к списку sharepoint из SSRS

Как подключить список Sharepoint к отчету SSRS?
Вариант 1. Создать dataset c подключением к sharepoint


<RSSharePointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <ListName>График отпусков</ListName>
      <Query>
        <Where>
        </Where>
      </Query>
    </RSSharePointList>


Привязать использую функцию lookup и lookupset

Вариант 2.
Подключить на уровне процедуры через базу sharepoint

ALTER PROCEDURE [dbo].[GetVacationsSharepoint] (@DATEFROM DATETIME = NULL,@DATEEND DATETIME =NULL )

AS
BEGIN

SET NOCOUNT OFF

SET LANGUAGE Russian;

--DECLARE @DATEFROM DATETIME
--DECLARE @DATEEND DATETIME

SET @DATEFROM =  ISNULL(@DATEFROM,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) )
SET @DATEEND = ISNULL(@DATEEND,DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, GETDATE()) + 1, 0)))

SET @DATEEND = DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0,@DATEEND) + 1, 0))
SELECT  D.DATA , t.[Login]  , t.[Имя пользователя] COLLATE Cyrillic_General_CI_AS as Username ,  DATENAME(dw,D.DATA) WeekDay, DATEPART(weekday,D.DATA) WeekDayNumber, DATEPART(wk,D.DATA) WeekNumber, DATENAME(month,D.DATA) Monthname ,DATEPART(month,D.DATA) MonthNumber , DATEName(yyyy,D.DATA) YEARNAME ,
DATEPART(dayofyear,D.DATA) DayOfyearNumber,
DATEPART (day, D.DATA) DayOfMnth ,
(CASE WHEN DATEPART(weekday,D.DATA) = 1 THEN 'Пн'
       WHEN DATEPART(weekday,D.DATA) = 2 THEN 'Вт'
       WHEN DATEPART(weekday,D.DATA) = 3 THEN 'Ср'
       WHEN DATEPART(weekday,D.DATA) = 4 THEN 'Чт'
       WHEN DATEPART(weekday,D.DATA) = 5 THEN 'Пт'
       WHEN DATEPART(weekday,D.DATA) = 6 THEN 'Сб'
       WHEN DATEPART(weekday,D.DATA) = 7 THEN 'Вс' ELSE DATENAME(dw,D.DATA) END) WeekDayShort,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN 1 ELSE NULL END) IsVacation,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN t.VacationType ELSE NULL END) VacationType,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN t.id ELSE NULL END) id,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN t.Comment ELSE NULL END) Comment
FROM (SELECT DATA
      FROM dbo.DatesBetween(@DATEFROM, @DATEEND)) D ,
            (
                           SELECT dat.nvarchar3 VacationType, dat.datetime1 DateFrom, dat.[datetime2] DateTo, dat.int1 USERID, u.tp_Login [Login], u.tp_Title [Имя пользователя], dat.tp_ID ID, dat.nvarchar1 Comment
                             FROM [Wss_content_80_portal2010].[dbo].[AllUserData] DAT (NOLOCK)
                           LEFT JOIN    [Wss_content_80_portal2010].[dbo].[UserInfo] u (NOLOCK) ON u.tp_ID = dat.int1
                           WHERE dat.tp_ListId = '055C8B06-6C99-4F4F-BAF2-ED809CA2CD42'
                           --(SELECT TOP 1 LIST.tp_ID FROM [Wss_content_80_portal2010].dbo.alllists LIST(NOLOCK)
                           --WHERE  LOWER(LIST.tp_Title)  = 'график отпусков' AND list.tp_DeleteTransactionId = 0x)
                             AND (dat.[tp_RowOrdinal] = 0)
                             AND (dat.tp_Level = 1)
                             AND (dat.[tp_IsCurrentVersion] = CONVERT(BIT, 1))
                             AND (dat.[tp_CalculatedVersion] = 0)
                             AND (dat.[tp_DeleteTransactionId] = 0x)
                             AND (dat.tp_SiteId = '5929DACB-CEDE-4564-9EDF-80B572A032AE')
                             AND dat.tp_ContentTypeId =  0x0100A3B1A57EC7FEE84593355BC92E45F9D5
             )  T

END

пятница, 10 октября 2014 г.

Полезные скрипты для сервера отчетов SSRS.

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

Вся необходимая информация для запуска сервера отчетов содержится в файле конфигурации  RsReportServer.config 
Дополнительную информацию о конфигурации сервера отчетов можно посмотреть процедурой  exec dbo.GetAllConfigurationInfo
запустив ее в базе ReportServer  
Итак поехали тут самые полезные скрипты

1. Посмотреть папки и доступ

SELECT  CASE RSCatalog.TYPE
          WHEN 1 THEN 'Folder'
          ELSE 'Report'
        END AS [Type] ,
        RSCatalog.Path ,
        RSCatalog.Name AS Report ,
        Users.UserName ,
        Roles.RoleName
FROM    [dbo].[Catalog] RSCatalog
        INNER JOIN [dbo].[PolicyUserRole] PolicyUserRole ON RSCatalog.PolicyID = PolicyUserRole.PolicyID
        INNER JOIN [dbo].[Roles] Roles ON PolicyUserRole.RoleID = Roles.RoleID
        INNER JOIN [dbo].[Users] Users ON PolicyUserRole.UserID = Users.UserID
WHERE   RSCatalog.TYPE IN ( 1, 2 )
ORDER BY RSCatalog.Path ,
        RSCatalog.Name ,
        Users.UserName

 

четверг, 4 сентября 2014 г.

Навигация в отчетах SSRS.

Когда в  отчёте   больше 100 групп и таблиц то информация на листе отчета может быть абсолютно не читаемой. Для того чтобы привести в читаемый вид используется схема документа с навигацией слева. Видео по ссылке здесь.
Настраивается все очень просто, для таблицы достаточно указать  свойство DocumentMapLabel

воскресенье, 6 июля 2014 г.

SQL и картография

Информацию нужно уметь подавать красиво..
В SSRS есть возможность красиво отобразить данные в отчете, если там  есть атрибут география будь то страна, регион, город и под рукой есть соответствующая карта.
Попробуем сделать это за 30 мин.
В итоге получится, отчет по регионам России, размер и цвет точки будут указывать количество населения в каждом регионе.
При наведении мышкой на регион должна появляться подсказка с наименованием региона и количеством людей проживающих в этом регионе.
При клике на любой регион должна открыться детальная карта этого региона по районам,  в Reporting Services есть возможность сделать подложку карт Bing maps.
Здесь регионы уже будут раскрашены по цветам в зависимости от количества населения в регионе.
Для этого нам понадобится сделать 5 шагов.

среда, 22 января 2014 г.

Слабо заголовок сделать на каждой странице в SSRS 2008?

Смотрю на этого кота и думаю, ну если он смог значит у меня тоже получится)


Оказывается все не так просто ка было в предыдущей версии 2005.
Достаточно было выставить значения


Теперь же ребята из MS решили немного пошалить и эти опции просто не работают, как говорится: Голосуй, не голосуй все равно получишь…
Ну понятно что ничего не получишь…

Однако как всегда оставили, возможность сделать это нестандартным способом, выбираем опцию Advanced Mode в группировках



И для нашей группы, для строк или столбцов, в моем случае для строк, выставляем опцию RepeatOnNewpage=True  и  KeepWithGroup=After
И все работает) Все гениальное не всегда просто)

Немного юмора как всегда..

четверг, 16 января 2014 г.

Ускоряем работу отчета SSRS. Кубический отчет.

С тех пор как оперативная память подешевела и все перешли на x64, активно развиваются технологии in-memory баз данных и BI систем (всем привет от Qlikview),
где проблемы с производительностью постепенно отпадают сами.
Поэтому задержка в отклике  работы отчета уже в минуту сейчас считается, серьезным поводом для оптимизации.
Благо для обычных отчетов SSRS всегда была доступна в качестве источника служба аналитики Analysis Services.
Сегодня попробуем сделать простой отчет используя технологии SSAS+ SSRS.

Предварительно должен быть развернут куб на сервере Analysis Services. Создаем источник в отчете для нашего куба


Создаем пустой лист отчета, в дизайнере запроса формируем наш запрос, если необходимо изменить запрос жмем
Соответствующую пиктограмму, для форматирования запроса лучше использовать MDX Beautifier


В итоге получаем MDX запрос следующего вида, если возникнут проблемы с флагом CONSTRAINED и будут возникать ошибки вида
Query (1, 1020) The restrictions imposed by the CONSTRAINED flag in the STRTOSET function were violated.
Рекомендую удалить этот флаг и условие WHERE, этот флаг защищает от Injection атак и проверяет чтобы в параметре были именно элементы измерения.

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

среда, 8 января 2014 г.

WTF отчеты SSRS не отображаются в Chrome и Safari

Есть одна известная проблема, отчеты SSRS  не отображаются в Chrome и Safari,
Сейчас покажу небольшой фокус, который я подсмотрел на stackoverflow,
Все дело в  различной интерпретации свойства overflow элемента div , в моем случае он называется  ctl32_ctl09
Открываем отчет в Chrome, правой кнопкой жмем  Просмотр кода элемента,  дальше CTRL+F  то бишь поиск


Вбиваем VisibleReportContent, выше находим  название нашего элемента
Проверяем, что это тот элемент который нам нужен, выставляем ему свойство visible, убеждаемся что отчет отображается


Дальше идем на сервер отчетов, в папку где расположены скрипты, обычно это выглядит так


Открываем файл reportingServices (не забываем сделать копию на всякий случай), добавляем туда этот скрипт,  обязательно проверяем наличие ;  в конце

function pageLoad() {
    var element = document.getElementById("ctl32_ctl09");
    if (element) {
        element.style.overflow = "visible";
    }

В итоге  выглядит как-то так

Перезапускаем Reporting services и наслаждаемся результатом

вторник, 10 декабря 2013 г.

Что делать если вас не узнают в SSRS?

Что делать если вас не узнают в Reporting Services или добро пожаловать ANONYMOUS….


Если у вас  например трехзвенная архитектура (клиент-> сервер приложений/отчетов-> сервер реляционной/многомерной БД) и  вы пользуетесь авторизацией Windows
Вы точно столкнетесь с этой задачей, однако на практике она оказывается гораздо проще чем кажется..
при запуске отчета по раздаче прав, который берет  данные с   сервера БД , возникла ошибка

Т.к. здесь возникает второй круг авторизации, первый от клиента к серверу отчетов, второй  от сервера отчетов к серверу БД, схема приблизительно выглядит так

Для решения этой задачи в принципе достаточно настроить авторизацию по протоколу Kerberos,
для этого нужно зарегистрировать в Active Directory  SPN (Service Principal Name) для учетной записи под которой работает сервис  и в итоге получится
Благодаря сопоставлению SPN, определенному в Active Directory (AD), учетная запись Windows, ответственная за службу,
может быть удостоверена и использована для проверки подлинности Kerberos

Вкратце о типах проверки подлинности в Reporting Services можно прочитать здесь

пятница, 6 декабря 2013 г.

Публикация отчетов SSRS на Sharepoint

Сделал ты например  отчет и чего с ним делать , хочется же все же поделиться им с  человеками ..
Вроде все просто когда сервер отчетов настроен в режиме Native Mode.
Но хочется же большего чтобы прямо на корпоративный портал и все заходили и пользовались.
Понадобится всего пару телодвижений.
Заходим на наш сайт в Sharepoint 2010

Создаем там 2 библиотеки документов, одна библиотека Reports будет для самих отчетов, другая под источники данных Report Data Sources
Выбираем элемент библиотека документов, называем ее Reports


Итеграция SharePoint 2010 и SSRS 2008

Интеграция, без нее никуда сейчас, с ней все вдруг становится простым и удобным. А кто против интеграции тот не вступит в Евросоюз))

Сегодня рассмотрим интеграцию двух  интересных продуктов SharePoint 2010 и Reporting Services 2008 из комплекта SQL SERVER 2008 R2.
Допустим у нас уже есть установленные  SharePoint 2010  и SQL SERVER 2008 как установить эти программы можно почитать отдельно.
1.Все начинается с того что нужно сконфигурировать Reporting Services 2008 в режим интеграции с SharePoint 2010  через  Reporting Services Configuration Manager,
Открывается через пуск-> программы-> SQL SERVER 2008  R2


About