SlideShare a Scribd company logo
1 of 27
Download to read offline
sql server reporting
services
Георгий Григорьев
Первая версия
Результат работы
приложения
SELECT w.FullName
,w.Position
,r.TestDate
,SUM(r.IsCorrectAnswer)/COUNT(r.ResultId) AS [Score]
FROM Results r
INNER JOIN Workers w
ON w.WorkerId = r.WorkerId
WHERE r.TestDate>DATEADD(MONTH ,-1 ,GETDATE())
GROUP BY
w.WorkerId
,w.FullName
,w.Position
,r.TestDate
Результат работы
приложения
Report Builder
Report Builder
Report Builder
Report Builder
Visual Studio
SQL Server Data Tools
Visual Studio
rdl отчеты
Visual Studio
Хранение отчетов
User-friendly отчеты
● ReportExecutionService
○ http://ReportingServiceURL/ReportServer/ReportExecution2005.asmx?wsdl
● ReportService2010
○ http://ReportingServiceURL/ReportServer/ReportService2010.asmx?wsdl
SOAP сервисы SSRS
SOAP сервисы SSRS
Soap api reporting service’а
using (var rsClient = new ReportExecutionServiceSoapClient("ReportExecutionServiceSoap")) {
rsClient.ClientCredentials.Windows.ClientCredential = CreateClientCredential();
rsClient.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
rsClient.ClientCredentials.Windows.AllowNtlm = true;
string reportPath = "/" + SERVER_REPORTS_FOLDER + "/" + config.ReportServerName;
string format = config.ExportFileType.ToString();
#region ssrs standart variables
FileStream stream = null;
string fileName, filePath;
try {
execHeader = rsClient.LoadReport(trustedUh, reportPath, historyID, out serverInfo, out execInfo);
rsClient.SetExecutionParameters(execHeader, trustedUh, parameters, locale, out execInfo);
byte[] result;
rsClient.Render(execHeader, trustedUh, format, devInfo, out result, out extension,
out encoding, out mimeType, out warnings, out streamIDs);
fileName = config.ReportFileName + "." + extension;
var exportdirectory = FilesDirectoryHelper.GetExportDirectoryPath(config.ExportDirectory);
filePath = Path.Combine(exportdirectory, fileName);
stream = File.OpenWrite(filePath);
stream.Write(result, 0, result.Length);
}
catch (Exception e)
{
logger.LogException(@"Во время экспорта отчета """ + config.ReportFileName + @""" возникла ошибка", e);
fileName = null;
}
finally
{
string message= @"Завершена выгрузка файла """ + config.ReportFileName
+ @""", файл сохранен под именем " + fileName + @".";
logger.Log(LogEventType.Info, message);
if(stream == null) ?? stream.Close();
}
return filePath;
}
Soap api reporting service’а
#region ssrs standart variables
string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";
string historyID , encoding, mimeType, extension;
Warning[] warnings;
string[] streamIDs; string locale = "ru-RU";
var execInfo = new ExecutionInfo();
var trustedUh = new TrustedUserHeader();
var execHeader = new ExecutionHeader();
var serverInfo = new ServerInfoHeader();
#endregion
var config = new ReportConfiguration();
config.ReportServerName = reportName;
config.ReportFileName = fileName;
config.ExportFileType = type;
config.ExportDirectory = filesDirectory;
string user = ConfigurationManager.AppSettings["SSRSUser"];
string password = ConfigurationManager.AppSettings["SSRSPassword"];
string domain = ConfigurationManager.AppSettings["SSRSDomain"];
var cred = new NetworkCredential(user, password, domain);
return cred;
Подписки
Подписки
ReportViewer
ReportViewer
Сравнение версий
Express Workgroup Standard Enterprise
Data sources Local SQL Server instance
SQL Server and Analysis
Services
Да
Rendering formats Excel, PDF, Image (RGDI, Print), HTML, Word Да
Management Report Manager
Supports SQL Server
Management Studio, Report
Manager
Да
Caching, History, Delivery,
Scheduling
Нет Да
Extensibility Нет
Можно
добавлять/удалять свои
источники данных,
рендеры, и средства
распространения
Да
Custom authentication Нет Да
Scale-out Report Servers Нет Да
Subscriptions Нет Да
Data-driven subscriptions Нет Да
Role-based security
Поддерживается, но
роли изменять нельзя
Поддерживается, но роли
изменять нельзя
Поддерживается, можно
добавить свои роли
Да
Report bulider Нет Да
Report models Нет Да
Model-level security Нет Да
Infinite clickthrough Нет Да
● Формирование и доставка статистических и административных
отчетов.
● Формирование отчетов о результатах работы приложения.
● Встраивание отчета в ваше приложение.
● Генерация статичного html контента.
Применение SSRS
?
Вопросы
https://ru.linkedin.com/in/georgygrigoryev
https://www.facebook.com/iamkarlson
http://iamkarlson.tk/
Контакты

More Related Content

Similar to SSRS не для dba

SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010" SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010"
Michael Noel
 
Node.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.uaNode.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.ua
Eugene Khvedchenya
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting
KewpaN
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
GoSharp
 
Secr презентация гардиенков
Secr презентация гардиенковSecr презентация гардиенков
Secr презентация гардиенков
LuxoftTraining
 

Similar to SSRS не для dba (20)

Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
 
Транзакционный фреймворк для сингловых игр и игр с асинхронным мультиплеером ...
Транзакционный фреймворк для сингловых игр и игр с асинхронным мультиплеером ...Транзакционный фреймворк для сингловых игр и игр с асинхронным мультиплеером ...
Транзакционный фреймворк для сингловых игр и игр с асинхронным мультиплеером ...
 
SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010" SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010"
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
 
Медиавозможности HTML5. WebRTC
Медиавозможности HTML5. WebRTCМедиавозможности HTML5. WebRTC
Медиавозможности HTML5. WebRTC
 
Расширение библиотеки Slick
Расширение библиотеки SlickРасширение библиотеки Slick
Расширение библиотеки Slick
 
Scorex framework
Scorex frameworkScorex framework
Scorex framework
 
Node.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.uaNode.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.ua
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting
 
RoboGuice
RoboGuiceRoboGuice
RoboGuice
 
Как мы запустили offline-версию сайта RG.RU / Алексей Чернышев, Максим Чагин ...
Как мы запустили offline-версию сайта RG.RU / Алексей Чернышев, Максим Чагин ...Как мы запустили offline-версию сайта RG.RU / Алексей Чернышев, Максим Чагин ...
Как мы запустили offline-версию сайта RG.RU / Алексей Чернышев, Максим Чагин ...
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Secr презентация гардиенков
Secr презентация гардиенковSecr презентация гардиенков
Secr презентация гардиенков
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 

SSRS не для dba

  • 3.
  • 4. Результат работы приложения SELECT w.FullName ,w.Position ,r.TestDate ,SUM(r.IsCorrectAnswer)/COUNT(r.ResultId) AS [Score] FROM Results r INNER JOIN Workers w ON w.WorkerId = r.WorkerId WHERE r.TestDate>DATEADD(MONTH ,-1 ,GETDATE()) GROUP BY w.WorkerId ,w.FullName ,w.Position ,r.TestDate
  • 16. ● ReportExecutionService ○ http://ReportingServiceURL/ReportServer/ReportExecution2005.asmx?wsdl ● ReportService2010 ○ http://ReportingServiceURL/ReportServer/ReportService2010.asmx?wsdl SOAP сервисы SSRS
  • 18. Soap api reporting service’а using (var rsClient = new ReportExecutionServiceSoapClient("ReportExecutionServiceSoap")) { rsClient.ClientCredentials.Windows.ClientCredential = CreateClientCredential(); rsClient.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation; rsClient.ClientCredentials.Windows.AllowNtlm = true; string reportPath = "/" + SERVER_REPORTS_FOLDER + "/" + config.ReportServerName; string format = config.ExportFileType.ToString(); #region ssrs standart variables FileStream stream = null; string fileName, filePath; try { execHeader = rsClient.LoadReport(trustedUh, reportPath, historyID, out serverInfo, out execInfo); rsClient.SetExecutionParameters(execHeader, trustedUh, parameters, locale, out execInfo); byte[] result; rsClient.Render(execHeader, trustedUh, format, devInfo, out result, out extension, out encoding, out mimeType, out warnings, out streamIDs); fileName = config.ReportFileName + "." + extension; var exportdirectory = FilesDirectoryHelper.GetExportDirectoryPath(config.ExportDirectory); filePath = Path.Combine(exportdirectory, fileName); stream = File.OpenWrite(filePath); stream.Write(result, 0, result.Length); } catch (Exception e) { logger.LogException(@"Во время экспорта отчета """ + config.ReportFileName + @""" возникла ошибка", e); fileName = null; } finally { string message= @"Завершена выгрузка файла """ + config.ReportFileName + @""", файл сохранен под именем " + fileName + @"."; logger.Log(LogEventType.Info, message); if(stream == null) ?? stream.Close(); } return filePath; }
  • 19. Soap api reporting service’а #region ssrs standart variables string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>"; string historyID , encoding, mimeType, extension; Warning[] warnings; string[] streamIDs; string locale = "ru-RU"; var execInfo = new ExecutionInfo(); var trustedUh = new TrustedUserHeader(); var execHeader = new ExecutionHeader(); var serverInfo = new ServerInfoHeader(); #endregion var config = new ReportConfiguration(); config.ReportServerName = reportName; config.ReportFileName = fileName; config.ExportFileType = type; config.ExportDirectory = filesDirectory; string user = ConfigurationManager.AppSettings["SSRSUser"]; string password = ConfigurationManager.AppSettings["SSRSPassword"]; string domain = ConfigurationManager.AppSettings["SSRSDomain"]; var cred = new NetworkCredential(user, password, domain); return cred;
  • 24. Сравнение версий Express Workgroup Standard Enterprise Data sources Local SQL Server instance SQL Server and Analysis Services Да Rendering formats Excel, PDF, Image (RGDI, Print), HTML, Word Да Management Report Manager Supports SQL Server Management Studio, Report Manager Да Caching, History, Delivery, Scheduling Нет Да Extensibility Нет Можно добавлять/удалять свои источники данных, рендеры, и средства распространения Да Custom authentication Нет Да Scale-out Report Servers Нет Да Subscriptions Нет Да Data-driven subscriptions Нет Да Role-based security Поддерживается, но роли изменять нельзя Поддерживается, но роли изменять нельзя Поддерживается, можно добавить свои роли Да Report bulider Нет Да Report models Нет Да Model-level security Нет Да Infinite clickthrough Нет Да
  • 25. ● Формирование и доставка статистических и административных отчетов. ● Формирование отчетов о результатах работы приложения. ● Встраивание отчета в ваше приложение. ● Генерация статичного html контента. Применение SSRS