Skip to content

Как я могу использовать столбец identity, не зная его имени

Пересказ статьи Kenneth Fisher. How can I use the identity column, without knowing identity column’s name


Одним из наиболее замечательных свойств ведения блога является открытие для себя чего-то совершенно неожиданного при написании статьи. Однажды я писал одну из последних учебных статей об использовании Microsoft Docs (или, или как я по прежнему это называю, Books on Line). Поскольку я хотел, чтобы люди находили некоторые вещи, я просто просматривал разные страницы в случайном порядке, подбирая раздел, читая его и придумывая что бы они могли поискать. По большей части я знал или, по крайней мере, был в какой-то мере знаком с теми вещами, о которых читал. Затем, когда я читал о предложении SELECT, я напал на $IDENTITY. Что за интересное ключевое слово. Ничего удивительного, оно просто возвращает значение столбца identity. (К вашему сведению, имеется также ключевое слово $ROWGUID.) Вот пример: Продолжить чтение "Как я могу использовать столбец identity, не зная его имени"
Категории: T-SQL

Понимание связанных серверов в SQL Server

Пересказ статьи Eric Blinn. Understanding SQL Server Linked Servers


Я вижу, что существует опция для связанных серверов (Linked Servers) в SQL Server Management Studio (SSMS), и я хочу узнать больше о том, что они делают и как работают.

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

Использование триггера INSTEAD OF для обновления представления

Пересказ статьи Chad Callihan. Using INSTEAD OF Trigger to Update View


Недавно я столкнулся со странной проблемой, и мне подумалось, что это может стать отличным постом в блоге. Мне сообщили о стандартном процессе в приложении, который завершался неудачно со следующей ошибкой SQL:


Msg 4405, Level 16, State 1, Line 19
View or function ‘XXXXX’ is not updatable because the modification affects multiple base tables.

(Представление или функция не является обновляемым, поскольку модификация затрагивает несколько базовых таблиц.)


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

Сравнение оператора Create Table в SQL Server и Oracle

Пересказ статьи Pablo Echeverria. SQL Server and Oracle Create Table Comparison


Если вы работаете с базами данных, то, вероятно, уже знаете как создать таблицу, определить столбцы, указать типы данных, добавить первичный ключ, внешние ключи и ограничения. Помимо стандартных таблиц и столбцов что другое возможно для таблиц в SQL Server и Oracle? Продолжить чтение "Сравнение оператора Create Table в SQL Server и Oracle"

Простая параметризация и тривиальные планы - часть 1

Пересказ статьи Paul White. Simple Parameterization and Trivial Plans — Part 1


Это первая часть серии о простой параметризации и тривиальных планах. Эти две функции компиляции тесно связаны и имеют близкие цели. Обе имеют целью производительность и эффективность для рабочих нагрузок, характеризующихся часто поступающими простыми операторами.

Несмотря на слова "простая" и "тривиальные", обе имеют тонкое поведение и детали реализации, которые могут сделать трудным для понимания то, как они работают. Эта серия не ограничивается основами, а концентрируется на менее известных аспектах, которые могут поставить в тупик даже самых опытных специалистов по базам данных. Продолжить чтение "Простая параметризация и тривиальные планы - часть 1"

Переменные SQL в скриптах, функциях, хранимых процедурах, SQLCMD и т.д.

Пересказ статьи Daniel Calbimonte. SQL Variables in Scripts, Functions, Stored Procedures, SQLCMD and More


Как и в любых языках разработки, использование переменных для хранения значений переменных в коде также весьма полезно при работе с СУБД Microsoft SQL Server. Здесь мы рассмотрим различные способы использования переменных при написании кода T-SQL, использовании SSIS, скриптов и т.п.
Мы рассмотрим следующие вопросы, относящиеся к переменным Transact-SQL в SQL Server:

  • Что такое переменные?

  • Что такое типы переменных?

  • Как объявить переменную?

  • Как установить переменную?

  • Зачем использовать переменные?

  • Как использовать переменные в хранимых процедурах?

  • Как использовать переменные в функциях?

  • Как использовать переменные с SQLCMD?

  • Как использовать переменные в скриптах?

  • Как использовать переменные с SSIS?

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

Пример триггера в SQL Server

Пересказ статьи Daniel Farina. SQL Server Trigger Example


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

Заполнение столбца SQL Server последовательным номерами без использования identity

Пересказ статьи Greg Robidoux. Populate a SQL Server column with a sequential number not using an identity


Проблема


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

Крутая штука в SQL Server 2022 – IS DISTINCT FROM

Пересказ статьи Koen Verbeeck. Cool Stuff in SQL Server 2022 – IS DISTINCT FROM


Я написал серию статей в блоге о некоторых замечательных особенностях в облачных хранилищах данных для платформы Snowflake; одной из которых был предикат IS [NOT] DISTINCT FROM. Я был рад обнаружить эту вещь теперь и в языке T-SQL, начиная с предварительной версии SQL Server 2022 CTP 2.1. Вы можете найти официальную документацию здесь. Продолжить чтение "Крутая штука в SQL Server 2022 – IS DISTINCT FROM"
Категории: T-SQL

Получение максимального значения на группу в SQL Server: Row Number против Cross Apply

Пересказ статьи Erik Darling. Getting The Top Value Per Group In SQL Server Row Number vs. Cross Apply


Введение


Существует много способов написания запросов в SQL Server. То, как будут выполняться различные варианты записи запроса, будет в значительной степени зависеть от:

  • Вы не делаете ничего странного.

  • Правильные индексы для запроса имеются.

  • Оптимизатор не замечает ваших трюков и дает вам один и тот же план запроса.

Продолжить чтение "Получение максимального значения на группу в SQL Server: Row Number против Cross Apply"

FORMAT - удобная, но дорогая функция SQL Server: часть 1

Пересказ статьи Aaron Bertrand. FORMAT is a convenient but expensive SQL Server function - Part 1


Я уже показывал, как FORMAT может быть почти в два раза дороже CONVERT для базы данных Microsoft SQL Server. Это сравнение, возможно, было несколько неточным - а как насчет запутанных выражений CONVERT? Есть ли другие способы получить удобство функции даты FORMAT без увеличения времени выполнения запроса в базе данных SQL? Продолжить чтение "FORMAT - удобная, но дорогая функция SQL Server: часть 1"

Тривиальные планы выполнения в SQL Server

Пересказ статьи Esat Erkec. SQL Server Trivial Execution Plans


Введение


SQL является непроцедурным языком программирования; это подразумевает, что пользователи базы данных пишут в коде только то, что они хотят сделать, но не описывают шаги процесса как это сделать. После получения запроса внутренние компоненты ядра реляционной базы данных делают синтаксический разбор и компилируют запрос, а затем выполняют поставленную задачу. По окончанию этих задач они предоставляют результат полученного запроса.
Продолжить чтение "Тривиальные планы выполнения в SQL Server"

Разница между суррогатным и естественным ключом, и их использование в SQL Server

Пересказ статьи Ben Snaidero. Surrogate Key vs Natural Key Differences and When to Use in SQL Server


Если опросить нескольких профессионалов в базах данных SQL Server, задав им вопрос: "Что лучше при определении первичного ключа - суррогатный ключ или столбец (столбцы) естественного ключа?", я предположу, что ответ будет близок к 50/50. Единственный определенный ответ, который вы получите по этому вопросу и с которым согласится большинство, будет тот, что при работе с хранилищами данных вы должны использовать суррогатные ключи для таблиц измерений и фактов. Это связано с тем, что реляционная база данных OLTP источника может измениться в любой момент из-за бизнес-требований, и ваше хранилище данных должно быть способно обработать эти изменения без необходимости обновления. Здесь мы рассмотрим некоторые соображения за и против каждого типа первичного ключа, чтобы вы могли принять лучшее решение для применения в ваших проектах. Продолжить чтение "Разница между суррогатным и естественным ключом, и их использование в SQL Server"
Категории: T-SQL

Ограничения страницы данных

Пересказ статьи Klaus Aschenbrenner. Data Page Restrictions


Сегодня поговорим об ограничениях, которые связаны со страницами данных, и почему есть ограничения, которые вам понравятся, хотя другие вы будете ненавидеть. Как вы знаете, страница данных всегда имеет размер 8 Кб, и вы можете сохранить на ней 8060 байтов данных. И размер ваших записей определяет, как много вы их можете сохранить на одной странице. Когда вы имеете дело с типами данных фиксированной длины (например, CHAR, INT, DATETIME и др.), имеется ограничение, что длина записи не может превосходить 8060 байтов, включая внутренние накладные расходы, которые использует SQL Server.

Продолжить чтение "Ограничения страницы данных"
Категории: T-SQL

Типы данных varchar в SQL Server, Oracle и PostgreSQL

Пересказ статьи Andrea Gnemmi. Varchar Data Types in SQL Server, Oracle and PostgreSQL


Здесь мы рассмотрим как сохранить максимальное число символов в столбце переменной длины и различия между тремя системами баз данных. В частности, будут рассмотрены различные процедуры, используемые для хранения больших строк в столбце с целью обработки большого текста или структурированных данных типа JSON (будет отдельная статья). Продолжить чтение "Типы данных varchar в SQL Server, Oracle и PostgreSQL"