SSRS: Dynamiczny SQL zasilający raport w Reporting Services

12-lut-2013

Mechanizm parametrów w większości przypadków śmiało wystarcza do budowania interaktywnych raportów, które potrafią wyciągnąć z serwera odpowiednie dane. Może się jednak zdarzyć, że zechcesz skorzystać z danych wygenerowanych poprzez dynamiczny SQL

Nim zdecydujesz się na to rozwiązanie roważ wszelkie inne metody, gdyż dynamiczny SQL jest narażony na ataki SQL Injection i nie jest rozwiązaniem bezpiecznym.

Załóżmy, że masz zapytanie

SELECT LastName, FirstName, Title
FROM Person.Person
WHERE

no właśnie. Zapytanie skończyło się na WHERE. Chcesz przez dynamiczny SQL podesłać tam różne wartości. Kiedy podeślesz 1=1, to wyświetlą się wszystkie rekordy, a jeżeli podeślesz Title=”Mr.”, to wyświetlą się tylko panowie.

Krok nr 1

Zdefiniuj parametr. Nazwałem go condition i podaj w dostępnych wartościach, co może zawierać:

SSRS: Definiowanie parametru w Reportin Services

Krok nr 2:

Otwórz właściwości DataSeta. Zauważ przycisk f(x) obok pola, w którym normalnie umieszczasz zapytanie SQL. Tym razem zdefiniujesz wyrażenie, które zwróci dynamiczny SQL!

Krok 3:

Zdefiniuj wyrażenie. Początek tego wyrażenia to SELECT. Ciąg dalszy to wartość parametru wybrana na stronie przez użytkownika:

Krok 4:

Sprawdź działanie. Kiedy użytkownik na stronie wybierze napis „All titles” do zapytania z kroku 3 zostanie doklejony warunek 1=1. Jeśli wybierzesz „Only Mr” do zapytania dokleimy Title=”Mr.”

Podobne rzeczy pokazujemy na kursach w bit Polska. Zapraszam na szkolenie z SQL Server Reporting Services!

 

Komentarze są wyłączone

Autor: Rafał Kraik