SQL Server

timestamp

Обнаружил полную бесполезность этого поля и типа данных при работе с репликацией и копированием. Оно не решает задачи определения какое изменение произошло последним. Кроме этого имеет глупое ограничениеЖ нельзя использовать к этому полю default, которое смогло бы решить вышепоставленную задачу.

Интеграция данных в MS SQL при переходе с 32 на 64 разряда

Чудны дела микрософта. Подгоняя всех к переходу на 64-разрядные системы, забывают про обратную совместимость. На сей раз речь идет о весьма важной составляющей - OLEDB и ODBC.

Уровни изоляции транзакций в SQL. Шпаргалка

Материал этой статьи послужил основой для одного из параграфов главы "Транзакции, изоляция и блокировки", входящей в книгу "СУБД для программиста. Базы данных изнутри". Для более глубокого понимания механизмов см. параграфы "Уровни SQL-92", "Блокировки", "Взаимные блокировки процессов (deadlock)", "Версии данных", "Проявления эффектов изоляции" и "Толстые транзакции".

Статья также была опубликована в журнале «Мир ПК», № 07, 2009

SPM (SQL Programming Macroprocessor). Создайте свой предметный язык - 2.

Назначение

Разработка серверного кода на процедурном расширении SQL имеет свои особенности. Во-первых, SQL - декларативный язык, и потому обычная для традиционного программирования функциональная декомпозиция зачастую является неэффективной. Во-вторых, SQL - специализированный язык манипуляции данными, и достичь наглядности и читаемости прикладного кода бывает нелегко.

SQL и модульное тестирование

В статье рассказывается о применении технологии модульных тестов при разработке приложений на SQL и его процедурных расширениях.

Постраничная (пакетная, paging) выборка в MS SQL Server

От редактора. Данная версия статьи частично устарела, смотрите новый вариант с учетом изменений в SQL Server 2012

Материал этой статьи послужил основой для одной из глав книги "СУБД для программиста. Базы данных изнутри".

* * *

На дворе 2008 год, а разработчики MS SQL Server до сих пор не реализовали встроенную возможность ограничивать в запросах результирующую выборку номерами строк. Например, "выбрать заказы данного клиента, начиная с 10000-й строки и по 12000-ю". Нечто вроде простого и понятного:

SELECT O.*
  FROM orders O INNER JOIN customers C
       ON O.customer_code = C.customer_code
  ORDER BY O.qty_date ASC
  LIMIT 10000, 12000

Введенные в 2005-й версии функции ранжирования и в частности row_number() несколько скрасили серые будни рядовых разработчиков, но по сути проблему так и не решили. Дело в том, что конструкция LIMIT работает на уровне ядра СУБД, а функция row_number() - на пользовательском. Соответственно, скорость выполнения отличается принципиально, что особенно заметно на больших таблицах.

В данном обзоре я опишу различные методы решения задачи постраничной выборки (paging, пакетная выборка) на примере таблиц заказов и клиентов. Для тестов использовался MS SQL Server 2005 Service Pack 2 (9.00.3054.00) на рабочей станции с 2 Гб оперативной памяти (512 доступно под MS SQL) с двуядерным процессором Intel 1,8 ГГц.

Случайная строка из таблицы. MS SQL 2005.

Псевдослучайная последовательность в MSSQL

Использование встроенной функции rand() в запросах чревато проблемой получения последовательности одинаковых чисел. Например

Страницы

Subscribe to RSS - SQL Server