Microsoft SQL Server (Structured Query Language) — это запатентованная система управления реляционными базами данных , разработанная корпорацией Microsoft . Как сервер базы данных , это программный продукт с основной функцией хранения и извлечения данных по запросу других программных приложений , которые могут работать как на том же компьютере, так и на другом компьютере в сети (включая Интернет). Microsoft продает не менее дюжины различных редакций Microsoft SQL Server, предназначенных для различных аудиторий и рабочих нагрузок от небольших приложений для одной машины до крупных приложений с выходом в Интернет и множеством одновременных пользователей .
История Microsoft SQL Server начинается с первого продукта Microsoft SQL Server — SQL Server 1.0, 16-разрядного сервера для операционной системы OS/2 в 1989 году — и продолжается до наших дней. Его название полностью описательное, это серверное программное обеспечение, которое отвечает на запросы на языке SQL .
По состоянию на февраль 2024 года [обновлять]Microsoft поддерживает следующие версии:
Начиная с SQL Server 2016, продукт поддерживается только на процессорах x64 и должен иметь процессор с тактовой частотой не менее 1,4 ГГц, рекомендуется 2,0 ГГц или выше. [7]
Текущая версия — Microsoft SQL Server 2022, выпущенная 16 ноября 2022 года. Версия RTM — 16.0.1000.6. [8]
Microsoft выпускает SQL Server в нескольких редакциях, с разными наборами функций и ориентированных на разных пользователей. Эти редакции: [9] [10]
Инструменты, опубликованные Microsoft, включают:
Уровень протокола реализует внешний интерфейс к SQL Server. Все операции, которые могут быть вызваны на SQL Server, передаются ему через определенный Microsoft формат, называемый Tabular Data Stream (TDS). TDS — это протокол прикладного уровня, используемый для передачи данных между сервером базы данных и клиентом. Первоначально спроектированный и разработанный Sybase Inc. для своего реляционного ядра базы данных Sybase SQL Server в 1984 году, а затем Microsoft в Microsoft SQL Server, пакеты TDS могут быть заключены в другие протоколы, зависящие от физического транспорта, включая TCP/IP , именованные каналы и общую память . Следовательно, доступ к SQL Server возможен через эти протоколы. Кроме того, API SQL Server также предоставляется через веб-службы . [10]
Хранилище данных — это база данных , которая представляет собой набор таблиц с типизированными столбцами. SQL Server поддерживает различные типы данных, включая примитивные типы , такие как Integer , Float , Decimal , Char (включая символьные строки), Varchar (символьные строки переменной длины), binary (для неструктурированных блоков данных), Text (для текстовых данных) и другие. Округление чисел с плавающей точкой до целых чисел использует либо симметричное арифметическое округление, либо симметричное округление вниз ( fix ) в зависимости от аргументов: SELECT Round(2.5, 0)
дает 3.
Microsoft SQL Server также позволяет определять и использовать определяемые пользователем составные типы (UDT). Он также делает статистику сервера доступной в виде виртуальных таблиц и представлений (называемых динамическими представлениями управления или DMV). Помимо таблиц, база данных может также содержать другие объекты, включая представления , хранимые процедуры , индексы и ограничения , а также журнал транзакций. База данных SQL Server может содержать максимум 2 31 объекта и может охватывать несколько файлов уровня ОС с максимальным размером файла 2 60 байт (1 эксабайт). [10] Данные в базе данных хранятся в первичных файлах данных с расширением .mdf
. Вторичные файлы данных, идентифицированные с .ndf
расширением, используются для того, чтобы данные одной базы данных могли быть распределены по более чем одному файлу и, опционально, по более чем одной файловой системе. Файлы журналов идентифицируются с .ldf
расширением. [10]
Пространство хранения, выделенное для базы данных, делится на последовательно пронумерованные страницы , каждая размером 8 КБ. Страница является базовой единицей ввода-вывода для операций SQL Server. Страница помечается 96-байтовым заголовком, в котором хранятся метаданные о странице, включая номер страницы, тип страницы, свободное место на странице и идентификатор объекта, которому она принадлежит. Тип страницы определяет данные, содержащиеся на странице. Эти данные включают: данные, хранящиеся в базе данных, индекс, карту распределения, которая содержит информацию о том, как страницы распределяются по таблицам и индексам; и карту изменений, которая содержит информацию об изменениях, внесенных в другие страницы с момента последнего резервного копирования или регистрации, или содержит большие типы данных, такие как изображение или текст. Хотя страница является базовой единицей операции ввода-вывода, пространство фактически управляется в терминах экстента , который состоит из 8 страниц. Объект базы данных может либо охватывать все 8 страниц в экстенте («однородный экстент»), либо делить экстент с 7 дополнительными объектами («смешанный экстент»). Строка в таблице базы данных не может занимать более одной страницы, поэтому ограничена размером 8 КБ. Однако, если данные превышают 8 КБ и строка содержит данные varchar или varbinary , данные в этих столбцах перемещаются на новую страницу (или, возможно, последовательность страниц, называемую единицей распределения ) и заменяются указателем на данные. [29]
Для физического хранения таблицы ее строки делятся на ряд разделов (пронумерованных от 1 до n). Размер раздела определяется пользователем; по умолчанию все строки находятся в одном разделе. Таблица делится на несколько разделов, чтобы распределить базу данных по компьютерному кластеру . Строки в каждом разделе хранятся либо в структуре B-дерева , либо в структуре кучи . Если таблица имеет связанный кластеризованный индекс для быстрого извлечения строк, строки хранятся в порядке, соответствующем их индексным значениям, при этом B-дерево предоставляет индекс. Данные находятся в листовом узле листьев, а другие узлы хранят индексные значения для листовых данных, доступных из соответствующих узлов. Если индекс некластеризован, строки не сортируются в соответствии с ключами индекса. Индексированное представление имеет ту же структуру хранения, что и индексированная таблица. Таблица без кластеризованного индекса хранится в неупорядоченной структуре кучи. Однако таблица может иметь некластеризованные индексы для быстрого извлечения строк. В некоторых ситуациях структура кучи имеет преимущества в производительности по сравнению с кластерной структурой. Как кучи, так и B-деревья могут охватывать несколько единиц распределения. [30]
SQL Server буферизует страницы в оперативной памяти, чтобы минимизировать дисковый ввод-вывод. Любая страница размером 8 КБ может быть буферизована в памяти, а набор всех страниц, буферизованных в данный момент, называется буферным кэшем. Объем памяти, доступной SQL Server, определяет, сколько страниц будет кэшировано в памяти. Буферный кэш управляется диспетчером буферов . Чтение или запись на любую страницу копирует ее в буферный кэш. Последующие чтения или записи перенаправляются в копию в памяти, а не в версию на диске. Страница обновляется на диске диспетчером буферов, только если к кэшу в памяти не было обращений в течение некоторого времени. При записи страниц обратно на диск используется асинхронный ввод-вывод , при котором операция ввода-вывода выполняется в фоновом потоке, чтобы другим операциям не приходилось ждать завершения операции ввода-вывода. Каждая страница записывается вместе со своей контрольной суммой при записи. При повторном считывании страницы ее контрольная сумма вычисляется снова и сопоставляется с сохраненной версией, чтобы гарантировать, что страница не была повреждена или подделана за это время. [31]
SQL Server позволяет нескольким клиентам использовать одну и ту же базу данных одновременно. Таким образом, ему необходимо контролировать параллельный доступ к общим данным, чтобы гарантировать целостность данных — когда несколько клиентов обновляют одни и те же данные или клиенты пытаются прочитать данные, которые находятся в процессе изменения другим клиентом. SQL Server предоставляет два режима управления параллелизмом: пессимистический параллелизм и оптимистический параллелизм . Когда используется пессимистический параллелизм, SQL Server контролирует параллельный доступ с помощью блокировок. Блокировки могут быть как общими, так и исключительными. Исключительная блокировка предоставляет пользователю исключительный доступ к данным — никакой другой пользователь не может получить доступ к данным, пока удерживается блокировка. Общие блокировки используются, когда некоторые данные считываются — несколько пользователей могут читать из данных, заблокированных общей блокировкой, но не могут получить исключительную блокировку. В последнем случае придется ждать, пока все общие блокировки будут сняты.
Блокировки могут применяться на разных уровнях детализации — на целые таблицы, страницы или даже на основе каждой строки в таблицах. Для индексов это может быть либо весь индекс, либо листья индекса. Уровень детализации, который будет использоваться, определяется администратором базы данных для каждой базы данных. Хотя мелкозернистая система блокировки позволяет большему количеству пользователей использовать таблицу или индекс одновременно, она требует больше ресурсов, поэтому она не обеспечивает автоматически более высокую производительность. SQL Server также включает два более легких решения для взаимного исключения — защелки и спин-блокировки — которые менее надежны, чем блокировки, но менее ресурсоемки. SQL Server использует их для DMV и других ресурсов, которые обычно не заняты. SQL Server также отслеживает все рабочие потоки, которые получают блокировки, чтобы убедиться, что они не попадают в тупики — в случае, если это произойдет, SQL Server принимает меры по исправлению положения, которые во многих случаях заключаются в завершении одного из потоков, запутавшихся в тупике, и откате начатой им транзакции. [10] Для реализации блокировки SQL Server содержит диспетчер блокировок . Менеджер блокировок поддерживает таблицу в памяти, которая управляет объектами базы данных и блокировками, если таковые имеются, на них вместе с другими метаданными о блокировке. Доступ к любому общему объекту опосредован менеджером блокировок, который либо предоставляет доступ к ресурсу, либо блокирует его.
SQL Server также предоставляет механизм оптимистического управления параллелизмом, который похож на управление параллелизмом многоверсионности, используемое в других базах данных. Механизм позволяет создавать новую версию строки всякий раз, когда строка обновляется, в отличие от перезаписи строки, т. е. строка дополнительно идентифицируется идентификатором транзакции, которая создала версию строки. Как старая, так и новая версии строки сохраняются и поддерживаются, хотя старые версии перемещаются из базы данных в системную базу данных, идентифицированную как Tempdb
. Когда строка находится в процессе обновления, любые другие запросы не блокируются (в отличие от блокировки), а выполняются для старой версии строки. Если другой запрос является оператором обновления, он приведет к двум различным версиям строк — обе они будут сохранены базой данных, идентифицированными по их соответствующим идентификаторам транзакций. [10]
Основной режим извлечения данных из базы данных SQL Server — это запрос . Запрос выражается с использованием варианта SQL, называемого T-SQL , диалекта, который Microsoft SQL Server разделяет с Sybase SQL Server из-за его унаследованности. Запрос декларативно указывает, что должно быть извлечено. Он обрабатывается процессором запросов, который вычисляет последовательность шагов, которые будут необходимы для извлечения запрошенных данных. Последовательность действий, необходимых для выполнения запроса, называется планом запроса . Может быть несколько способов обработки одного и того же запроса. Например, для запроса, который содержит оператор join и оператор select , выполнение join для обеих таблиц, а затем выполнение select для результатов даст тот же результат, что и выборка из каждой таблицы, а затем выполнение join, но приведет к разным планам выполнения. В таком случае SQL Server выбирает план, который, как ожидается, даст результаты в кратчайшие сроки. Это называется оптимизацией запроса и выполняется самим процессором запросов. [10]
SQL Server включает в себя оптимизатор запросов на основе стоимости, который пытается оптимизировать стоимость с точки зрения ресурсов, которые потребуются для выполнения запроса. При наличии запроса оптимизатор запросов смотрит на схему базы данных , статистику базы данных и загрузку системы в это время. Затем он решает, в какой последовательности обращаться к таблицам, указанным в запросе, в какой последовательности выполнять операции и какой метод доступа использовать для доступа к таблицам. Например, если таблица имеет связанный индекс, следует ли использовать индекс или нет: если индекс находится в столбце, который не является уникальным для большинства столбцов (низкая «селективность»), может быть нецелесообразно использовать индекс для доступа к данным. Наконец, он решает, выполнять ли запрос параллельно или нет. Хотя параллельное выполнение более затратно с точки зрения общего процессорного времени, поскольку выполнение фактически разделено на разные процессоры, это может означать, что оно будет выполняться быстрее. После того, как план запроса сгенерирован для запроса, он временно кэшируется. Для дальнейших вызовов того же запроса используется кэшированный план. Неиспользованные планы сбрасываются через некоторое время. [10] [32]
SQL Server также позволяет определять хранимые процедуры . Хранимые процедуры — это параметризованные запросы T-SQL, которые хранятся на самом сервере (а не выдаются клиентским приложением, как в случае с общими запросами). Хранимые процедуры могут принимать значения, отправленные клиентом в качестве входных параметров, и отправлять результаты обратно в качестве выходных параметров. Они могут вызывать определенные функции и другие хранимые процедуры, включая ту же самую хранимую процедуру (до заданного количества раз). Им может быть выборочно предоставлен доступ к . В отличие от других запросов, хранимые процедуры имеют связанное имя, которое используется во время выполнения для преобразования в фактические запросы. Кроме того, поскольку код не нужно отправлять с клиента каждый раз (так как к нему можно получить доступ по имени), это снижает сетевой трафик и несколько повышает производительность. [33] Планы выполнения для хранимых процедур также кэшируются по мере необходимости.
T-SQL (Transact-SQL) — это фирменное расширение процедурного языка Microsoft для SQL Server. Оно предоставляет инструкции REPL (Read-Eval-Print-Loop), которые расширяют стандартный набор инструкций SQL для инструкций Data Manipulation ( DML ) и Data Definition ( DDL ), включая специфичные для SQL Server настройки, безопасность и управление статистикой базы данных.
Он предоставляет ключевые слова для операций, которые могут быть выполнены на SQL Server, включая создание и изменение схем базы данных, ввод и редактирование данных в базе данных, а также мониторинг и управление самим сервером. Клиентские приложения, которые потребляют данные или управляют сервером, будут использовать функциональность SQL Server, отправляя запросы и операторы T-SQL, которые затем обрабатываются сервером, а результаты (или ошибки) возвращаются клиентскому приложению. Для этого он предоставляет таблицы только для чтения, из которых можно считывать статистику сервера. Функциональность управления предоставляется через системно определенные хранимые процедуры, которые можно вызывать из запросов T-SQL для выполнения операции управления. Также возможно создавать связанные серверы с использованием T-SQL. Связанные серверы позволяют одному запросу обрабатывать операции, выполняемые на нескольких серверах. [34]
SQL Server Native Client — это собственная клиентская библиотека доступа к данным для Microsoft SQL Server, начиная с версии 2005. Она изначально реализует поддержку функций SQL Server, включая реализацию Tabular Data Stream , поддержку зеркальных баз данных SQL Server, полную поддержку всех типов данных, поддерживаемых SQL Server, асинхронные операции, уведомления о запросах, поддержку шифрования , а также получение нескольких наборов результатов в одном сеансе базы данных. SQL Server Native Client используется под капотом подключаемыми модулями SQL Server для других технологий доступа к данным, включая ADO или OLE DB . SQL Server Native Client также можно использовать напрямую, минуя общие слои доступа к данным. [35]
28 ноября 2011 года была выпущена предварительная версия драйвера SQL Server ODBC для Linux . [36]
Microsoft SQL Server 2005 включает компонент под названием SQL CLR («Common Language Runtime»), через который он интегрируется с .NET Framework . В отличие от большинства других приложений, использующих .NET Framework, сам SQL Server размещает среду выполнения .NET Framework , то есть требования к памяти, потокам и управлению ресурсами .NET Framework удовлетворяются самой SQLOS, а не базовой операционной системой Windows. SQLOS также предоставляет службы обнаружения и разрешения взаимоблокировок для кода .NET. С SQL CLR хранимые процедуры и триггеры могут быть написаны на любом управляемом языке .NET , включая C# и VB.NET . Управляемый код также может использоваться для определения UDT ( пользовательских типов ), которые могут сохраняться в базе данных. Управляемый код компилируется в сборки CLI и после проверки на безопасность типов регистрируется в базе данных. После этого их можно вызывать, как и любую другую процедуру. [37] Однако при запуске кода под SQL CLR доступно только подмножество библиотеки базовых классов . Большинство API, связанных с функциональностью пользовательского интерфейса, недоступны. [37]
При написании кода для SQL CLR данные, хранящиеся в базах данных SQL Server, могут быть доступны с помощью API ADO.NET, как и любое другое управляемое приложение , которое обращается к данным SQL Server. Однако, делая это, создается новый сеанс базы данных, отличный от того, в котором выполняется код. Чтобы избежать этого, SQL Server предоставляет некоторые усовершенствования для поставщика ADO.NET, которые позволяют перенаправлять соединение в тот же сеанс, в котором уже размещен работающий код. Такие соединения называются контекстными соединениями и устанавливаются путем установки параметра в строке соединения. SQL Server также предоставляет несколько других усовершенствований для API ADO.NET , включая классы для работы с табличными данными или одной строкой данных, а также классы для работы с внутренними метаданными о данных, хранящихся в базе данных. Он также предоставляет доступ к функциям XML в SQL Server, включая поддержку XQuery . Эти усовершенствования также доступны в процедурах T-SQL в результате введения нового типа данных XML (функции запроса, значения, узлов). [38]context connection
true
SQL Server также включает в себя набор дополнительных служб. Хотя они не являются необходимыми для работы системы базы данных, они предоставляют услуги с добавленной стоимостью поверх основной системы управления базами данных. Эти службы либо работают как часть некоторого компонента SQL Server, либо вне процесса как служба Windows и предоставляют свой собственный API для управления и взаимодействия с ними.
Службы машинного обучения SQL Server работают в экземпляре SQL Server, позволяя людям заниматься машинным обучением и анализом данных без необходимости отправлять данные по сети или ограничиваться памятью собственных компьютеров. Службы поставляются с дистрибутивами R и Python от Microsoft, которые содержат широко используемые пакеты для науки о данных, а также некоторые фирменные пакеты (например, revoscalepy , RevoScaleR , microsoftml), которые можно использовать для создания моделей машин в масштабе.
Аналитики могут либо настроить клиентскую машину для подключения к удаленному серверу SQL и перенести выполнение скриптов на него, либо запустить скрипты R или Python как внешний скрипт внутри запроса T-SQL. Обученная модель машинного обучения может храниться в базе данных и использоваться для оценки. [39]
Используется внутри экземпляра, среды программирования. Для приложений с кросс-экземплярами Service Broker взаимодействует по TCP/IP и позволяет синхронизировать различные компоненты посредством обмена сообщениями. Service Broker, работающий как часть ядра базы данных, обеспечивает надежную платформу обмена сообщениями и очередями сообщений для приложений SQL Server. [40]
Услуги брокера услуг состоят из следующих частей: [41]
Тип сообщения определяет формат данных, используемый для сообщения. Это может быть объект XML, простой текст или двоичные данные, а также пустое тело сообщения для уведомлений. Контракт определяет, какие сообщения используются в разговоре между службами и кто может помещать сообщения в очередь. Очередь выступает в качестве поставщика хранилища для сообщений. Они внутренне реализованы как таблицы SQL Server, но не поддерживают функциональность вставки, обновления или удаления. Программа службы получает и обрабатывает сообщения брокера служб. Обычно программа службы реализована как хранимая процедура или приложение CLR . Маршруты — это сетевые адреса, по которым брокер служб находится в сети. [41]
Кроме того, сервисный брокер поддерживает функции безопасности, такие как сетевая аутентификация (с использованием NTLM , Kerberos или сертификатов авторизации ), проверка целостности и шифрование сообщений . [41]
Службы репликации SQL Server используются SQL Server для репликации и синхронизации объектов базы данных, как в целом, так и подмножества имеющихся объектов, через агентов репликации, которые могут быть другими серверами баз данных в сети или кэшами баз данных на стороне клиента. Службы репликации следуют модели издатель/подписчик, т. е. изменения отправляются одним сервером базы данных («издатель») и принимаются другими («подписчики»). SQL Server поддерживает три различных типа репликации: [42]
SQL Server Analysis Services (SSAS) добавляет возможности OLAP и интеллектуального анализа данных для баз данных SQL Server. Механизм OLAP поддерживает режимы хранения данных MOLAP , ROLAP и HOLAP . Analysis Services поддерживает стандарт XML для анализа в качестве базового протокола связи. Доступ к данным куба можно получить с помощью запросов MDX и LINQ [46] . [47] Специфическая функциональность интеллектуального анализа данных предоставляется через язык запросов DMX . Analysis Services включает в себя различные алгоритмы — деревья решений , алгоритм кластеризации, наивный байесовский алгоритм, анализ временных рядов, алгоритм кластеризации последовательностей, линейный и логистический регрессионный анализ и нейронные сети — для использования в интеллектуальном анализе данных. [48]
SQL Server Reporting Services (SSRS) — это среда генерации отчетов для данных, собранных из баз данных SQL Server. Она администрируется через веб-интерфейс. Службы отчетов включают интерфейс веб-служб для поддержки разработки пользовательских приложений отчетов. Отчеты создаются в виде файлов RDL . [49]
Отчеты могут быть разработаны с использованием последних версий Microsoft Visual Studio (Visual Studio.NET 2003, 2005 и 2008) [50] с установленной Business Intelligence Development Studio или с включенным Report Builder. После создания файлы RDL могут быть отображены в различных форматах, [51] [52] включая Excel, PDF , CSV , XML , BMP , EMF , GIF , JPEG , PNG и TIFF , [53] и HTML Web Archive.
Первоначально представленный как надстройка для SQL Server 2000 после выпуска, [54] Notification Services был включен в состав платформы Microsoft SQL Server в первый и единственный раз с SQL Server 2005. [55] [56] SQL Server Notification Services — это механизм для генерации уведомлений, управляемых данными, которые отправляются подписчикам Notification Services. Подписчик регистрируется на определенное событие или транзакцию (которая регистрируется на сервере базы данных как триггер); когда событие происходит, Notification Services может использовать один из трех методов для отправки подписчику сообщения, информирующего о возникновении события. Эти методы включают SMTP, SOAP или путем записи в файл в файловой системе. [57] Notification Services был прекращен Microsoft с выпуском SQL Server 2008 в августе 2008 года и больше не является официально поддерживаемым компонентом платформы базы данных SQL Server.
SQL Server Integration Services (SSIS) предоставляет возможности ETL для SQL Server для импорта данных , интеграции данных и потребностей в хранилищах данных . Integration Services включает инструменты GUI для создания рабочих процессов, таких как извлечение данных из различных источников, запрос данных, преобразование данных, включая агрегацию, дедупликацию, де-/нормализацию и слияние данных, а затем экспорт преобразованных данных в целевые базы данных или файлы. [58]
Служба поиска полного текста SQL Server — это специализированная служба индексации и запросов для неструктурированного текста, хранящегося в базах данных SQL Server. Индекс поиска полного текста может быть создан для любого столбца с текстовыми данными на основе символов. Он позволяет искать слова в текстовых столбцах. Хотя это можно выполнить с помощью LIKE
оператора SQL, использование службы поиска полного текста SQL Server может быть более эффективным. Полный поиск допускает неточное соответствие исходной строке, указанное значением ранга , которое может находиться в диапазоне от 0 до 1000 — более высокий ранг означает более точное совпадение. Он также допускает лингвистическое соответствие («флективный поиск»), т. е. лингвистические варианты слова (например, глагол в другом времени) также будут соответствовать данному слову (но с более низким рангом, чем точное совпадение). Также поддерживаются поиски по близости, т. е. если искомые слова не встречаются в последовательности, указанной в запросе, но находятся рядом друг с другом, они также считаются совпадением. T-SQL предоставляет специальные операторы, которые можно использовать для доступа к возможностям FTS. [59] [60]
Механизм полнотекстового поиска разделен на два процесса: процесс Filter Daemon ( msftefd.exe
) и процесс Search ( msftesql.exe
). Эти процессы взаимодействуют с SQL Server. Процесс Search включает индексатор (который создает индексы полного текста) и процессор полнотекстовых запросов. Индексатор сканирует текстовые столбцы в базе данных. Он также может индексировать двоичные столбцы и использовать iFilters для извлечения осмысленного текста из двоичного BLOB-объекта (например, когда документ Microsoft Word хранится как неструктурированный двоичный файл в базе данных). iFilters размещаются в процессе Filter Daemon. После извлечения текста процесс Filter Daemon разбивает его на последовательность слов и передает индексатору. Индексатор отфильтровывает шумовые слова , т. е. такие слова, как A , And и т. д., которые встречаются часто и не являются полезными для поиска. С оставшимися словами создается инвертированный индекс , связывающий каждое слово со столбцами, в которых оно было найдено. Сам SQL Server включает компонент Gatherer , который отслеживает изменения в таблицах и вызывает индексатор в случае обновлений. [61]
Когда полнотекстовый запрос получен процессором запросов SQL Server, он передается процессору запросов FTS в процессе поиска. Процессор запросов FTS разбивает запрос на составляющие слова, отфильтровывает шумовые слова и использует встроенный тезаурус для поиска лингвистических вариантов для каждого слова. Затем слова запрашиваются по инвертированному индексу, и вычисляется ранг их точности. Результаты возвращаются клиенту через процесс SQL Server. [61]
SQLCMD — это приложение командной строки, которое поставляется с Microsoft SQL Server и предоставляет функции управления SQL Server. Оно позволяет писать и выполнять запросы SQL из командной строки. Оно также может выступать в качестве языка сценариев для создания и запуска набора операторов SQL в качестве сценария. Такие сценарии хранятся в виде .sql
файла и используются либо для управления базами данных, либо для создания схемы базы данных во время развертывания базы данных.
SQLCMD был представлен в SQL Server 2005 и продолжал существовать в версиях SQL Server 2008, 2008 R2, 2012, 2014, 2016 и 2019. Его предшественниками в более ранних версиях были OSQL и ISQL, которые были функционально эквивалентны в том, что касается выполнения T-SQL, и многие параметры командной строки идентичны, хотя SQLCMD добавляет дополнительную универсальность.
Microsoft Visual Studio включает встроенную поддержку программирования данных с Microsoft SQL Server. Его можно использовать для написания и отладки кода , который будет выполняться SQL CLR. Он также включает конструктор данных , который можно использовать для графического создания, просмотра или редактирования схем баз данных. Запросы можно создавать как визуально, так и с помощью кода. SSMS 2008 и более поздние версии также предоставляют IntelliSense для SQL-запросов.
SQL Server Management Studio — это графический инструмент, входящий в состав SQL Server 2005 и более поздних версий, для настройки, управления и администрирования всех компонентов Microsoft SQL Server. Инструмент включает в себя как редакторы скриптов, так и графические инструменты, которые работают с объектами и функциями сервера. [62] SQL Server Management Studio заменяет Enterprise Manager в качестве основного интерфейса управления для Microsoft SQL Server с SQL Server 2005. Версия SQL Server Management Studio также доступна для SQL Server Express Edition, для которого она известна как SQL Server Management Studio Express (SSMSE). [63]
Центральная функция SQL Server Management Studio — это Object Explorer, который позволяет пользователю просматривать, выбирать и воздействовать на любой из объектов на сервере. [64] Его можно использовать для визуального наблюдения и анализа планов запросов и оптимизации производительности базы данных, среди прочего. [65] SQL Server Management Studio также можно использовать для создания новой базы данных, изменения любой существующей схемы базы данных путем добавления или изменения таблиц и индексов или анализа производительности. Он включает окна запросов, которые предоставляют интерфейс на основе графического интерфейса для написания и выполнения запросов. [10]
Azure Data Studio — это кроссплатформенный редактор запросов, доступный для дополнительной загрузки. Инструмент позволяет пользователям писать запросы, экспортировать результаты запросов, фиксировать SQL-скрипты в репозиториях Git и выполнять базовую диагностику сервера. Azure Data Studio поддерживает системы Windows, Mac и Linux. [66]
Он был выпущен в общедоступную версию в сентябре 2018 года. До выпуска предварительная версия приложения была известна как SQL Server Operations Studio.
Business Intelligence Development Studio (BIDS) — это IDE от Microsoft, используемая для разработки решений по анализу данных и бизнес-аналитике с использованием служб Microsoft SQL Server Analysis Services , Reporting Services и Integration Services . Она основана на среде разработки Microsoft Visual Studio , но настроена с использованием расширений и типов проектов, специфичных для служб SQL Server, включая инструменты, элементы управления и проекты для отчетов (с использованием служб Reporting Services), кубов и структур интеллектуального анализа данных (с использованием служб Analysis Services). [67] Для SQL Server 2012 и более поздних версий эта IDE была переименована в SQL Server Data Tools (SSDT).