Skip to content

Процедура sp_execute_external_script и SQL-инъекция

Пересказ статьи Grant Fritchey. sp_execute_external_script and SQL Injection



Для того, чтобы иметь возможность использовать R и Python (а также Java в SQL Server 2019) непосредственно из ваших скриптов SQL Server, применяется процедура sp_execute_external_script. Когда вы видите этот код впервые, он напоминает sp_execute_sql. Первое, что приходит на ум, это "О, нет. Еще одно лазейка для проникновения SQL-инъекции." У меня есть для вас несколько хороших и плохих новостей.
Продолжить чтение "Процедура sp_execute_external_script и SQL-инъекция"
Категории: T-SQL

Пример применения функции Substring в T-SQL, R и Python

Пересказ статьи Siddharth Mehta. SQL Server Substring Function Example with T-SQL, R and Python



Проблема


Манипуляция со строками является одним из наиболее фундаментальных элементов работы с данными, используемом почти в каждом примере преобразования данных. Основными целями манипуляции со строками являются форматирование, усечение, набивка, замена и аналогичные функции. Часто для применения этих функций требуется выбрать конкретную часть строки, и затем применить преобразования. В SQL Server имеется три языка, которые часто используются в связке - T-SQL, R и Python. Все эти языки программирования/запросов предоставляют возможность выбора подстроки с помощью функции substring или эквивалентной функции/оператора. Здесь мы научимся использовать функцию substring для выбора строки на всех трех языках.
Продолжить чтение "Пример применения функции Substring в T-SQL, R и Python"

DMV для новичков

Пересказ статьи Monica Rathbun. DMV’s for the Beginner



Я замечаю, что некоторые администраторы баз данных и разработчики никогда не обращают внимания на динамические административные представления (DMV), которые доступны в SQL Server, начиная с версии 2005. Эти представления предоставляют полезные средства для определения того, что происходит с конкретным экземпляром SQL Server. Итак, в этой статье я собираюсь перечислить несколько моих любимых DMV как справку для тех, кто может быть незнаком с ними. Продолжить чтение "DMV для новичков"
Категории: T-SQL

Расщепление строк при помощи OPENJSON

Пересказ статьи Dave Mason. Splitting Strings With OPENJSON



Начиная с SQL Server 2016, Майкрософт предоставляет функцию STRING_SPLIT. Это табличнозначная функция, которая разбивает символьную строку на ряды подстрок на основе заданного символа-разделителя. Это было приятное добавление, которого долго ждали. Но имеется один недостаток: порядок выходных строк не гарантирует совпадение с порядком подстрок во входной строке.
Продолжить чтение "Расщепление строк при помощи OPENJSON"
Категории: T-SQL

Парсинг данных типа JSON в SQL Server

Пересказ статьи Dave Mason. Parsing JSON Data In SQL Server



Майкрософт добавил поддержку данных JSON, начиная с SQL Server 2016. JSON представляет собой формат файлов открытого стандарта, состоящих из пар атрибут-значение и данных типа массивов. Он обычно используется для передачи объектов данных при асинхронном взаимодействии браузера с сервером. Но он также используется для хранения неструктурированных данных в файлах или базах данных NoSQL, таких как Microsoft Azure CosmosDB. Для большинства из нас поддержка JSON в SQL Server, вероятно, означает две вещи: мы можем конвертировать реляционные данные в JSON и обратно. Здесь я сосредоточусь на преобразовании JSON в реляционные данные.

Продолжить чтение "Парсинг данных типа JSON в SQL Server"
Категории: T-SQL

Разница между Cube и Rollup

Пересказ статьи Ben Richardson. The Difference Between Rollup and Cube




Предложение GROUP BY используется для группировки результатов агрегатных функций по заданному столбцу. Однако предложение GROUP BY не выполняет операции агрегации на множестве уровней иерархии. Например, вы можете вычислить суммарную зарплату сотрудников для каждого отдела компании (один уровень иерархии), но не можете вычислить общую зарплату всех сотрудников, независимо от отделов, в которых они работают (два уровня иерархии).

Продолжить чтение "Разница между Cube и Rollup"
Категории: T-SQL

За и против динамического SQL

Пересказ статьи Thom Andrews. Dos and Don’ts of Dynamic SQL



Динамический SQL может быть невероятно мощным инструментом при надлежащем использовании, однако он может стать также невероятной прорехой в безопасности или привести к утомительной отладке при плохом написании. Ниже приводится несколько плохих и хороших примеров, которые помогут вам при написании динамических операторов.
Продолжить чтение "За и против динамического SQL"
Категории: T-SQL

Неявное преобразование, что это?

Пересказ статьи Monica Rathbun. What is Implicit Conversion?



Это еще одна небольшая публикация по поводу простых изменений, которые вы можете сделать в своем коде, чтобы получить более оптимальный план выполнения. На этот раз речь пойдет о неявных преобразованиях. Неявное преобразование происходит, когда SQL Server должен автоматически преобразовать данные из одного типа в другой при сравнении значений, перемещении данных или комбинации одних значений с другими. Когда значения преобразуются в процессе обработки запроса, это добавляет излишнюю нагрузку, что влияет на производительность.
Продолжить чтение "Неявное преобразование, что это?"
Категории: T-SQL

Как исправить ошибку "Символьные или двоичные данные могут быть усечены"

Пересказ статьи Brent Ozar. How to fix the error “String or binary data would be truncated”



Сначала давайте посмотрим на ошибку: создадим таблицу с небольшими полями, а затем попытаемся вставить больше данных, чем они могут вместить.
Продолжить чтение "Как исправить ошибку "Символьные или двоичные данные могут быть усечены""
Категории: T-SQL

Стоимость бесполезных суррогатных ключей в таблицах связи

Пересказ статьи lukaseder. The Cost of Useless Surrogate Keys in Relationship Tables


Насколько хорош естественный ключ?

Это очень сложный вопрос для большинства сущностей на этапе проектирования схемы. В некоторых редких случаях, кажется, имеется "очевидный" кандидат, обусловленный различными стандартами ISO, например:
Продолжить чтение "Стоимость бесполезных суррогатных ключей в таблицах связи"
Категории: T-SQL

Краткое введение в утилиту bcp

Пересказ статьи Arthur-Daniels. A brief introduction for bcp


Я заканчиваю использование утилиты bcp перемещением таблиц между средами. При этом я нахожу, что множество руководств в интернет очень детально описывают её использование. Это прекрасно, если у вас много времени. Вот моё краткое введение. Я буду обращаться сюда, если забуду, как её использовать.

Продолжить чтение "Краткое введение в утилиту bcp"
Категории: T-SQL

Использование индексирования для решения проблем с блокировкой и тупиком

Пересказ статьи David Fowler. Using Indexing To Solve Blocking and Deadlocking Issues


Когда какое-то время назад в беседе я предположил, что индекс мог бы, возможно, решить проблему тупика, реакция была такой: "Что? Как может индекс решить проблему тупика?"
Продолжить чтение "Использование индексирования для решения проблем с блокировкой и тупиком"

Разница между различными бинарными коллациями (языки, версии, BIN против BIN2)

Пересказ статьи Solomon Rutzky. Differences Between the Various Binary Collations (Cultures, Versions, and BIN vs BIN2)


Бинарные коллации во многом проще для понимания, чем небинарные, поскольку они не имеют сложностей, связанных с национальными лингвистическими правилами. Они просто работают со значениями символов и тут нет места для чудес: все символы имеют базовые значения; если два символа имеют одинаковое значение, то они равны, в противном случае не равны; и это значение определяет порядок, правильно?
Продолжить чтение "Разница между различными бинарными коллациями (языки, версии, BIN против BIN2)"
Категории: T-SQL

Пересмотр производительности оконных агрегатов в SQL Server 2019

Пересказ статьи Kathi Kellenberger. The Performance of Window Aggregates Revisited with SQL Server 2019


В 2005 и 2012 Майкрософт ввела в SQL Server большое число оконных функций, например, мою любимую функцию LAG. Эти функции отличает хорошая производительность, но главное преимущество их, на мой взгляд, состоит в простом написании сложных запросов. Я многие годы с удовольствием пользовалась этими функциями, однако одна вещь все же беспокоила меня - это производительность агрегатных оконных функций. К счастью, ситуация изменилась с приходом SQL Server 2019.
Продолжить чтение "Пересмотр производительности оконных агрегатов в SQL Server 2019"

Когда и как экранировать строки в T-SQL

Пересказ статьи Louis Davidson. How To, and Not To, Escape a String In TSQL


Идея этого блога возникла из ошибок, которые я допускаю, исходя из неверных предположений. Читайте документацию, чтобы развеять ошибочные представления.
Продолжить чтение "Когда и как экранировать строки в T-SQL"
Категории: T-SQL