Для того, чтобы иметь возможность использовать R и Python (а также Java в SQL Server 2019) непосредственно из ваших скриптов SQL Server, применяется процедура sp_execute_external_script. Когда вы видите этот код впервые, он напоминает sp_execute_sql. Первое, что приходит на ум, это "О, нет. Еще одно лазейка для проникновения SQL-инъекции." У меня есть для вас несколько хороших и плохих новостей. Продолжить чтение "Процедура sp_execute_external_script и SQL-инъекция"
Манипуляция со строками является одним из наиболее фундаментальных элементов работы с данными, используемом почти в каждом примере преобразования данных. Основными целями манипуляции со строками являются форматирование, усечение, набивка, замена и аналогичные функции. Часто для применения этих функций требуется выбрать конкретную часть строки, и затем применить преобразования. В SQL Server имеется три языка, которые часто используются в связке - T-SQL, R и Python. Все эти языки программирования/запросов предоставляют возможность выбора подстроки с помощью функции substring или эквивалентной функции/оператора. Здесь мы научимся использовать функцию substring для выбора строки на всех трех языках. Продолжить чтение "Пример применения функции Substring в T-SQL, R и Python"
Я замечаю, что некоторые администраторы баз данных и разработчики никогда не обращают внимания на динамические административные представления (DMV), которые доступны в SQL Server, начиная с версии 2005. Эти представления предоставляют полезные средства для определения того, что происходит с конкретным экземпляром SQL Server. Итак, в этой статье я собираюсь перечислить несколько моих любимых DMV как справку для тех, кто может быть незнаком с ними.
Продолжить чтение "DMV для новичков"
Начиная с SQL Server 2016, Майкрософт предоставляет функцию STRING_SPLIT. Это табличнозначная функция, которая разбивает символьную строку на ряды подстрок на основе заданного символа-разделителя. Это было приятное добавление, которого долго ждали. Но имеется один недостаток: порядок выходных строк не гарантирует совпадение с порядком подстрок во входной строке. Продолжить чтение "Расщепление строк при помощи OPENJSON"
Майкрософт добавил поддержку данных JSON, начиная с SQL Server 2016. JSON представляет собой формат файлов открытого стандарта, состоящих из пар атрибут-значение и данных типа массивов. Он обычно используется для передачи объектов данных при асинхронном взаимодействии браузера с сервером. Но он также используется для хранения неструктурированных данных в файлах или базах данных NoSQL, таких как Microsoft Azure CosmosDB. Для большинства из нас поддержка JSON в SQL Server, вероятно, означает две вещи: мы можем конвертировать реляционные данные в JSON и обратно. Здесь я сосредоточусь на преобразовании JSON в реляционные данные.
Предложение GROUP BY используется для группировки результатов агрегатных функций по заданному столбцу. Однако предложение GROUP BY не выполняет операции агрегации на множестве уровней иерархии. Например, вы можете вычислить суммарную зарплату сотрудников для каждого отдела компании (один уровень иерархии), но не можете вычислить общую зарплату всех сотрудников, независимо от отделов, в которых они работают (два уровня иерархии).
Динамический SQL может быть невероятно мощным инструментом при надлежащем использовании, однако он может стать также невероятной прорехой в безопасности или привести к утомительной отладке при плохом написании. Ниже приводится несколько плохих и хороших примеров, которые помогут вам при написании динамических операторов. Продолжить чтение "За и против динамического SQL"
Это еще одна небольшая публикация по поводу простых изменений, которые вы можете сделать в своем коде, чтобы получить более оптимальный план выполнения. На этот раз речь пойдет о неявных преобразованиях. Неявное преобразование происходит, когда SQL Server должен автоматически преобразовать данные из одного типа в другой при сравнении значений, перемещении данных или комбинации одних значений с другими. Когда значения преобразуются в процессе обработки запроса, это добавляет излишнюю нагрузку, что влияет на производительность. Продолжить чтение "Неявное преобразование, что это?"
Я заканчиваю использование утилиты bcp перемещением таблиц между средами. При этом я нахожу, что множество руководств в интернет очень детально описывают её использование. Это прекрасно, если у вас много времени. Вот моё краткое введение. Я буду обращаться сюда, если забуду, как её использовать.
Бинарные коллации во многом проще для понимания, чем небинарные, поскольку они не имеют сложностей, связанных с национальными лингвистическими правилами. Они просто работают со значениями символов и тут нет места для чудес: все символы имеют базовые значения; если два символа имеют одинаковое значение, то они равны, в противном случае не равны; и это значение определяет порядок, правильно? Продолжить чтение "Разница между различными бинарными коллациями (языки, версии, BIN против BIN2)"
В 2005 и 2012 Майкрософт ввела в SQL Server большое число оконных функций, например, мою любимую функцию LAG. Эти функции отличает хорошая производительность, но главное преимущество их, на мой взгляд, состоит в простом написании сложных запросов. Я многие годы с удовольствием пользовалась этими функциями, однако одна вещь все же беспокоила меня - это производительность агрегатных оконных функций. К счастью, ситуация изменилась с приходом SQL Server 2019. Продолжить чтение "Пересмотр производительности оконных агрегатов в SQL Server 2019"