Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Как написано во Введении, чтобы помочь разработчикам всецело раскрыть свои творческие возможности, в Microsoft были выложены в открытый бесплатный доступ технические спецификации протоколов клиентских операционных систем Windows (включая .NET Framework), Windows Server, Microsoft Office, семейства продуктов SharePoint, Microsoft Exchange Serve и Microsoft SQL Server, подпадающих под действие лицензионных программ MCPP и WSPP, созданных согласно постановлению американского суда в соответствии с заключенным сторонами мировым соглашением и решением Еврокомиссии от 2004 г.
SQL Serverная часть протоколов публикуется здесь. Она включает комплект спецификаций и технических описаний проприетарных (не относящихся к открытым стандартам или содержащих нестандартные дополнения со стороны Microsoft) протоколов взаимодействия различных модулей SQL Server. В частности, выложено описание протокола прикладного слоя TDS (Tabular Data Stream) 4.2 – основного протокола взаимодействия клиентских приложений с SQL Server. 4.2 – это версия протокола[MS-SSTDS], а не SQL Server, к которому он относится J. Последняя редакция документа датируется 4 июня 2010 г. и, как гласит Appendix A: Product Behavior, относится ко всем версиям SQL Server с 6.5 по 2008 R2.Конкретная специфика поведения в зависимости от версии / сервис-пака указывается в тексте документа. Основной интерес представляет протокол [MS-TDS], являющийся надмножеством [MS-SSTDS]. В связи с тем, что он затрагивает поведение не только SQL Server, но и операционной системы (Windows® 2000, ХР, 2003, Vista, Windows Server® 2008, Windows® 7, Windows Server® 2008 R2), соответствующий документ следует искать в описании протоколов работы Windows: MSDN Library -> Open Specifications -> Windows Protocols -> Windows Server Protocols (WSPP)). В документе описывается 7-я версия протокола [MS-TDS], диалекты 7.0 – 7.3. Из содержания понятно, что описываемая версия TDS относится к последним версиям SQL Server, достаточно взглянуть на пункты 2.2.5.5.2 Common Language Runtime (CLR) Instances, 2.2.5.5.3 XML Values, 2.2.5.5.4 SQL_VARIANT Values,2.2.5.5.5 Table Valued Parameter (TVP) Values и др.
Применительно к SQL Server также можно найти аналогичные вещи для модулей OLAP и отчетности. Для Analysis Services это [MS-SSAS]: SQL Server Analysis Services Protocol Specification. Зачастую этот документ оказывается намного полезней BOL, которые, когда речь заходит о SSAS, носят, скорее, характер отписки, чем документации. Там же имеется еще описание протокола с похожим названием - [MS-SSAS8]: SQL Server Analysis Services Version 8.0 Protocol Specification, но его, наверное, уже вряд ли кому понадобится смотреть, т.к. он относится к SQL Server 2000 и Office 2007 SP1.
Аналогичная вещь для Reporting Services называется [MS-RSWSRM2010]: Report Server Web Service Specification for Report Management: ReportService2010. Как следует из названия, здесь расписывается веб-сервис, за который мы дергаем, когда хотим автоматизировать какое-либо действо на SSRS, например, положить в какую-нибудь папку на сервере новый отчет или выполнить существующий и отрендерить его в Word и т.д. Сходным образом через этот же веб-сервис с сервером отчетности взаимодействуют штатные клиентские средства: Report Manager, Report Builder.Ранее существовало два отдельных веб-сервиса – один для управления метаданными, другой – для выполнения отчетов, которые в SQL Server 2008 R2 были объединены в ReportService2010. Если интересуют старые веб-сервисы, можно глянуть спецификации [MS-RSWSRE2005]: Report Server Web Service Specification for Report Execution: ReportExecution2005, [MS-RSWSRMNM2005]: Report Server Web Service Specification for Report Management Native Mode: ReportService2005. Reporting Services отличаются от Analysis Services и SQL Server тем, что язык XML for Analysis (XMLA 1.1) является открытым стандартом, да и SQL, как ни крути, в общем, тоже. Язык, на котором разговаривают с Reporting Services – Report Definition Language (RDL) – открытым стандартом не является, поэтому он также описан на данном сайте. См. [MS-RDL]: Report Definition Language File Format Structure Specification. Несмотря на то, что Books On-Line в части Reporting Services написаны не в пример разумней, чем по Analysis Services, бывают ситуации, когда поневоле приходится идти читать спецификации. Помнится, вскорости после выхода 2008-го я читал семинар по новым красотам в отчетности, и на демке по rich-text formatting кто-то из слушателей спросил: можно ли в списке менять форму буллитов, ширину отступа, как в Ворде. Я предположил, что нет, поскольку в интерфейсе проекта Report Designer таких возможностей не прослеживалось, и полез уточнять в BOL. BOL на эту тему деликатно молчали. Пришлось забраться в описание RDL и почитать структуру элементов Textbox.Paragraphs (п.2.15.22, стр.184), Paragraphs.Paragraph (п.2.16.1, стр.185) и, собственно, Paragraph (п.2.17, стр.186), из которой следует, что заначки под хранение ни отступа, ни значка буллита в RDL, увы, не предусмотрено. Кстати, аналогично решался недавний вопрос на тему значка градуса и вообще печати в суперскрипте (т.е. верхних индексов).
Другие открытые, а точнее сказать, раскрытые протоколы относятся к бинарному представлению XML внутри SQL Server ([MS-BINXML]: SQL Server Binary XML Structure Specification), сериализации CLRных типов ([MS-SSCLRT]: Microsoft SQL Server CLR Types Serialization Formats Specification), формату строк соединений ([MS-ODBCSTR]: ODBC Connection String Structure Specification, [MS-OLEDBSTR]: OLEDB Connection String Structure Specification, [MS-SCCSTR]: SqlClient Connection String Structure Specification), публикации базы в Интернет, чтобы хостинг-провайдеры имели возможность поддерживать такую возможность ([MS-SSDPWP]: Database Publishing Wizard Protocol Specification – см. Database Publishing Wizard 1.1) и ко многим другим интересным возможностям. Протоколы и спецификации охватывают широкий диапазон функциональности SQL Server вплоть до новейшей, появившейся в текущей на сегодняшний день версии – 2008 R2 ([MS-SSMDSWS]: Master Data Services Web Service Structure Specification, [MS-CEPM]: Microsoft Complex Event Processing Engine Manageability Protocol Specification). Полный перечень опубликованных протоколов SQL Server можно найти здесь.
Алексей Шуленин