Протоколы Microsoft SQL Server
Как написано во Введении, чтобы помочь разработчикам всецело раскрыть свои творческие возможности, в 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 можно найти здесь.
Алексей Шуленин