SQL.RU
 client/server technologies
 Главная | Документация | Статьи | Книги | Форум | Блоги | Опросы | Гостевая | Рассылка | Работа | Поиск | FAQ |
   
#321<<  #322  >>#323

СОДЕРЖАНИЕ

1.СЕМИНАР
1.1.Системы управления бизнес-процессами
2.СТАТЬИ
2.1.Функции ранжирования и их производительность в SQL Server 2005
3.ССЫЛКИ НА СТАТЬИ
3.1.Статьи на русском языке
3.2.Англоязычные статьи
4.ФОРУМ SQL.RU
4.1.Самые популярные темы недели
4.2.Вопросы остались без ответа
5.КНИГИ
5.1.Microsoft SQL Server. Полезные алгоритмы от SQL.RU (+CD)
 

Идеи и пожелания к любым версиям SQL Server Вы можете направить по адресу:
mssqlwish@sql.ru


СЕМИНАР

Системы управления бизнес-процессами

Дата проведения:

15 сентября 2006г. 18:00

Доклады:

  1. "BPM: кому, зачем, когда?". Анатолий Белайчук

    1) BPM: зачем? - основания считать BPM "The Next Big Thing"; для России даже более актуально, чем для Запада
    2) BPM: кому? - BPM - это, строго говоря, не ИТ; новые правила игры между бизнесом и ИТ; ИТ-шники могут на этом как выиграть, так и проиграть
    3) BPM: когда? - перспективы и прогнозы -- мнения аналитиков; возможные выигрыши и риски; поправки на российские особенности

  2. "BPMS - центр системы координат в информационном пространстве бизнеса". Андрей Гордиенко

    Дается краткий обзор последних достижений на стыке информационных технологий и менеджмента. Рассматривается позиционирование BPMS по отношению к ERP, учетным системам, системам автоматизированной подготовки производства и другим системам обработки информации в бизнесе. Дается оценка BPMS как инструмента информационной интеграции бизнеса и средства для реализации новых технологий управления (процессного управления, TQM, положений Деминга).

  3. "Практикум по BPM". Юлия Вагнер

    Обычно компании не склонны делиться информацией о своих бизнес-процессах, резонно полагая это коммерческим ноу-хау. Отсюда возникает впечатление, что бизнес-процессы и BPM - это то, о чем многие говорят, но чего вживую никто не видел. Чтобы исправить это впечатление, мы подробно рассматриваем один из основных бизнес-процессов компании - дистрибьютора программного обеспечения и его реализацию в BPM-системе Unify NXJ.

Для регистрации на семинар, необходимо заполнить РЕГИСТРАЦИОННУЮ ФОРМУ, с указанием Вашей фамилии, имени, отчества и адреса электронной почты.
Количество мест в аудитории семинара ограничено, поэтому просим Вас не откладывать регистрацию.
В день проведения семинара, всем кто был успешно зарегистрирован, по электронной почте придёт письмо с подтверждением регистрации.

Обсудить предстоящий семинар можно в форуме.

Место проведения:

г. Москва, ул. Крылатская, д. 17 (Бизнес-парк "Крылатские Холмы"). Представительство Microsoft в России и СНГ.

Для того, что бы пройти в помещение проведения семинара, при себе необходимо иметь паспорт или другое удостоверение личности.

Схема проезда

Анимированная схема проезда.

Проезд от станции метро "Крылатское" организован автобусами Hyundai Country. Автобус с опознавательной табличкой Krylatskoe Hills Business Park. Станция метро "Крылатское", головной вагон, выход налево (к кинотеатру "Матрица") и пройти до остановки автобуса около 500 м (в направлении следования метропоезда). ВНИМАНИЕ! Остановка была недавно перенесена на новое место, она теперь примерно вдвое дальше, чем была раньше, на площади защитников неба. Теперь она в конце дома №15 по Осеннему Бульвару, не доходя до палатки "Дыни-Арбузы". Ориентировочное время в пути автобуса - 10 мин. Автобусы ходят каждые 5-15 минут. Кроме того, до бизнес-парка можно добраться автобусами № 829 и 229.
Конечная остановка - Krylatskoe Hills Business Park, как пройти в кампус MS указано на информационном щите. Здание MS ближайшее к гребному каналу, рядом с ним строится медицинский центр. От конечной остановки нужно проследовать к первому зданию с противоположной стороны бизнес-парка. После того, как войдете в здание, поверните налево - так вы попадете в Microsoft и там вам покажут, как пройти к месту проведения встречи. Если кто приедет на своем транспорте - парковка вдоль улицы Крылатская.

[В начало]

СТАТЬИ

Функции ранжирования и их производительность в SQL Server 2005

По материалам статьи Alex Kozak Ranking Functions and Performance in SQL Server 2005
Перевод Главчева Дмитрия

Функции ранжирования, представленные в SQL Server 2005, являются значительным улучшением Transact-SQL. Многие задачи, например, создание массивов, генерация последовательностей, нахождение рангов, и т.п., которые до 2005 версии требовали большого количества кода, теперь могут быть реализованы намного проще и быстрее.

Рассмотрим синтаксис функций ранжирования:

ROW_NUMBER () OVER ([<выражение_partition_by>] <выражение_order_by>) RANK () OVER ([<выражение_partition_by>] <выражение_order_by>) DENSE_RANK () OVER ([<выражение_partition_by>] <выражение_order_by>) NTILE (целочисленное_выражение) OVER ([<выражение_partition_by>] <выражение_order_by>)

Все четыре функции имеют выражения "partition by" и "order by", что делает их очень гибкими в использовании. Однако, есть один ньюанс в синтаксисе, на который нужно обратить внимание: выражение "order by" является обязательным.

Почему нужно обратить особое внимание на фразу "order by"?

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

Возможно ли избежать сортировки в функциях ранжирования? Если возможно, увеличит ли это производительность?

Попробуем ответить на эти вопросы.

Как избежать сортировки в функциях ранжирования

Создайте тестовую таблицу (листинг 1):

-- Листинг 1. Создание тестовой таблицы. CREATE TABLE RankingFunctions(orderID int NOT NULL); INSERT INTO RankingFunctions VALUES(7); INSERT INTO RankingFunctions VALUES(11); INSERT INTO RankingFunctions VALUES(4); INSERT INTO RankingFunctions VALUES(21); INSERT INTO RankingFunctions VALUES(15);

Запустите следующий запрос с функцией ROW_NUMBER():

SELECT ROW_NUMBER () OVER (ORDER BY orderID) AS rowNum, ordered FROM RankingFunctions;

Если вы посмотрите план выполнения этого запроса (смотрите рис.1), вы обнаружите, что оператор Sort интенсивно потребляет ресурсы, и затраты на него составляют 78 процентов.

Рис.1

Запустите тот же запрос, оставив выражение OVER() пустым:

SELECT ROW_NUMBER () OVER () AS rowNum, ordered FROM RankingFunctions;

Вы получите ошибку:

Msg 4112, Level 15, State 1, Line 1 The ranking function "row_number" must have an ORDER BY clause.

Так как анализатор команд не разрешает вам убрать выражение "order by", возможно, вы сможете заставить оптимизатор не использовать оператор Sort. Например, вы можете создать вычисляемый столбец, который содержит простое целое число, 1, и затем использовать этот виртуальный столбец в выражении "order by" (листинг 2):

-- Листинг 2. Вычисляемый столбец ORDER BY. -- Запрос 1: Использование производной таблицы. SELECT ROW_NUMBER () OVER (ORDER BY const) AS rowNum, ordered FROM (SELECT orderID, 1 as const FROM RankingFunctions) t1 GO -- Запрос 2: Использование общего табличного выражения (common table expression - CTE). WITH OriginalOrder AS (SELECT orderID, 1 as const FROM RankingFunctions) SELECT ROW_NUMBER () OVER (ORDER BY const) AS rowNum, ordered FROM OriginalOrder;

Если вы посмотрите план выполнения в этом случае (рис.2), то вы обнаружите, что оптимизатор запросов больше не использует оператор Sort. Оба запроса сгенерируют номера строк и возвратят значения orderID в исходном порядке.

Рис.2

RowNum

orderID

1

7

2

11

3

4

4

21

5

15

Существует небольшая проблема с запросами в листинге 2 - он требуют времени (ресурсов) для создания и заполнения виртуального столбца. В результате прирост производительности от невыполненной сортировки может исчезнуть во время заполнения вычисляемого столбца. Есть ли какой-либо другой способ избежать операции сортировки?

Попробуем ответить на этот вопрос.

"order by" можно использовать в выражениях. Выражение может быть простым выражением, константой, переменной, столбцом и т.п. Простые выражения могут быть объединены в сложные.

Что если вы укажете оптимизатору использовать язык выражений? Например, попробуйте использовать в качестве выражения подзапрос:

SELECT ROW_NUMBER () OVER (ORDER BY (SELECT orderID FROM RankingFunctions)) AS rowNum, ordered FROM RankingFunctions;

Анализатор команд выдаст ошибку.

Msg 512, Level 16, State 1, Line 1 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

О, вот и подсказка! Выражение (в нашем случае подзапрос) должно выдавать единственное значение.

Следующий запрос должен сработать:

SELECT ROW_NUMBER () OVER (ORDER BY (SELECT MAX(OrderID) FROM RankingFunctions)) AS rowNum, ordered FROM rankingFunctions;

Удача! Этот запрос работает именно так, как вам нужно - без оператора Sort.

Теперь вы можете написать выражение в "order by", возвращающее единственный результат, чтобы оптимизатор не использовал сортировку.

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

Ниже показаны несколько дополнительных примеров с использованием выражений в "order by" (листинг 3):

-- Листинг 3. Использование выражения в ORDER BY. SELECT ROW_NUMBER () OVER (ORDER BY (SELECT 1 FROM sysobjects WHERE 1<>1)) AS rowNum, ordered FROM RankingFunctions; GO SELECT ROW_NUMBER () OVER (ORDER BY (SELECT 1)) AS rowNum, ordered FROM RankingFunctions; GO DECLARE @i as bit; SELECT @i = 1; SELECT ROW_NUMBER () OVER (ORDER BY @i) AS rowNum, ordered FROM RankingFunctions;

На рис.3 показаны планы выполнения для запросов в листинге 3.

Рис.3

Функции RANK(), DENSE_RANK() и NTILE() с выражениями в ORDER BY

Перед тем, как мы пойдем дальше, мы должны проверить правильность решений для оставшихся функций ранжирования.

Создадим несколько дублирующих записей в таблице RankingFunctions и протестируем функции RANK() и DENSE_RANK():

-- Листинг 4. Функции RANK() и DENSE_RANK() с выражениями в ORDER BY. -- Создание дублирующих записей в таблице RankingFunctions. INSERT INTO RankingFunctions VALUES(11); INSERT INTO RankingFunctions VALUES(4); INSERT INTO RankingFunctions VALUES(4); GO -- Запрос 1: (ORDER BY orderID). SELECT RANK () OVER (ORDER BY orderID) AS rankNum, DENSE_RANK () OVER (ORDER BY orderID) AS denseRankNum, ordered FROM RankingFunctions; GO -- Запрос 2: (ORDER BY выражение). SELECT RANK () OVER (ORDER BY (SELECT 1)) AS rankNum, DENSE_RANK () OVER (ORDER BY (SELECT 1)) AS denseRankNum, ordered FROM RankingFunctions; GO

Если вы посмотрите планы выполнения (рис.4), вы обнаружите, что первый запрос в листинге 4 требует большого количества ресурсов для сортировки. Второй запрос не имеет оператора Sort. Так что запросы работают как и ожидалось.

Рис.4

Однако, когда вы запустите запросы, результат второго из них будет неверным:

Запрос 1 получает правильный результат:

rankNum

denseRankNum

orderID

1

1

4

1

1

4

1

1

4

4

2

7

5

3

11

5

3

11

7

4

15

8

5

21

Запрос 2 получает неверный результат:

rankNum

denseRankNum

orderID

1

1

7

1

1

11

1

1

4

1

1

21

1

1

15

1

1

11

1

1

4

1

1

4

Даже несмотря на то, что выражения в "order by" помогают избежать сортировки, они не могут использоваться с функциями RANK() и DENSE_RANK(). Очевидно, что эти функции ранжирования должны иметь отсортированные входные данные для получения правильных результатов.

Рассмотрим функцию NTILE():

-- Листинг 5. Функция NTILE() с выражением в ORDER BY. -- Запрос 1: ORDER BY ordered. SELECT NTILE(3) OVER (ORDER BY orderID) AS NTileNum, ordered FROM RankingFunctions; GO -- Запрос 1: ORDER BY выражение. SELECT NTILE(3) OVER (ORDER BY (SELECT 1)) AS NTileNum, ordered FROM RankingFunctions;

Проанализировав планы выполнения для обоих запросов (смотрите рис.5), вы обнаружите, что:

Рис.5

Второй запрос пропускает сортировку, что означает, что все работает верно. Результаты обоих запросов верны. Оптимизатор использует соединения с использованием вложенных циклов (Nested Loops), что в некоторых случаях может работать медленно.

Производительность функций ранжирования

Теперь, когда вы знаете, как отключать сортировку в функциях ранжирования, вы можете протестировать их производительность.

Вставим еще немного записей в таблицу RankingFunctions (листинг 6):

-- Листинг 6. Вставка дополнительных записей в таблицу RankingFunctions. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RankingFunctions]') AND type in (N'U')) DROP TABLE RankingFunctions SET NOCOUNT ON CREATE TABLE RankingFunctions(orderID int NOT NULL); INSERT INTO RankingFunctions VALUES(7); INSERT INTO RankingFunctions VALUES(11); INSERT INTO RankingFunctions VALUES(4); INSERT INTO RankingFunctions VALUES(21); INSERT INTO RankingFunctions VALUES(15); DECLARE @i as int, @LoopMax int, @orderIDMax int; SELECT @i = 1, @LoopMax = 19; WHILE (@i <= @LoopMax) BEGIN SELECT @orderIDMax = MAX(orderID) FROM RankingFunctions; INSERT INTO RankingFunctions(OrderID) SELECT OrderID + @orderIDMax FROM RankingFunctions; SELECT @i = @i + 1; END SELECT COUNT(*) FROM RankingFunctions; -- 2,621,440. UPDATE RankingFunctions SET orderID = orderID/5 WHERE orderID%5 = 0;

Части INSERT и SELECT команды INSERT...SELECT используют ту же самую таблицу RankingFunctions.

Количество сгенерированных записей может быть рассчитано, как:

количество сгенерированных записей = начальное количество записей * power(2, количество итераций цикла)

Так как таблица RankingFunctions изначально имеет 5 записей и @LoopMax = 19, количество сгенерированных записей будет равно:

5 * POWER(2,19) = 2,621,440

Чтобы увеличить энтропию в порядке записей, я изменил (обновил) значения orderID в записях, где orderID может быть поделен на 5 без остатка.

Затем я протестировал команды INSERT и DELETE, используя функции ранжирования с сортировкой и без нее (листинг 7 и листинг 8).

-- Листинг 7. Тесты производительности 1 (вставка данных с помощью SELECT ...INTO). -- Запрос 1: использование ORDER BY. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].RankingFunctionsInserts') AND type in (N'U')) DROP TABLE RankingFunctionsInserts; GO SELECT ROW_NUMBER () OVER (ORDER BY OrderID) AS rowNum, OrderID INTO RankingFunctionsInserts FROM RankingFunctions; -- Удаление таблицы RankingFunctionsInserts и выполнение запроса 2 -- Запрос 2: сортировка отсутствует. SELECT ROW_NUMBER () OVER (ORDER BY (SELECT 1)) AS rowNum, OrderID INTO RankingFunctionsInserts FROM RankingFunctions; -- Удаление таблицы RankingFunctionsInserts и выполнение запроса 3 -- Запрос 3: сортировка отсутствует. SELECT IDENTITY(int,1,1) AS rowNum, ordered INTO RankingFunctionsInserts FROM RankingFunctions;

Каждый из этих трех запросов в листинге 7 вставляет сгенерированный номер записи и orderID в таблицу RankingFunctionsInserts с помощью команды SELECT...INTO (этот метод очень полезен, когда вы пытаетесь создать псевдо-массивы в SQL).

Ради любопытства я протестировал решение со столбцом IDENTITY (запрос 3). Это решение распространено в версиях, предшествующих выпуску SQL Server2005.

-- Листинг 8. Тесты производительности 2 (удаление каждой пятой записи в RankingFunctions). -- Запрос 1: Без сортировки. -- Запуск скрипта из листинга 6 для вставки 2,621,440 записей в RankingFunctions. WITH originalOrder AS (SELECT ROW_NUMBER ( ) OVER (ORDER BY (SELECT 1)) AS rowNum, OrderID FROM RankingFunctions) DELETE originalOrder WHERE rowNum%5 = 0; -- Запрос 2: с ORDER BY OrderID. -- Запуск скрипта из листинга 6 для вставки 2,621,440 записей в RankingFunctions. WITH originalOrder AS (SELECT ROW_NUMBER ( ) OVER (ORDER BY OrderID) AS rowNum, OrderID FROM RankingFunctions) DELETE originalOrder WHERE rowNum%5 = 0;

Удаление каждой N-ной строки или дублируюших строк в таблице являются обычными задачами для администратора или разработчика баз данных. В листинге 8 я использовал общие табличные выражения для удаления каждой пятой записи в таблице RankingFunctions.

Результаты тестов.

Ниже показаны результаты тестов, которые я получил на обычном настольном компьютере с Pentium 4 и 512 мегабайтами оперативной памяти на Windows 2000 Server и Microsoft SQL Server 2005 Developer Edition:

rankNum

ROW_NUMBER()

RANK()

DENSE_RANK()

NTILE(3)

Вставка 2,621,440 записей

       

без сортировки

5 сек.

Нет данных

Нет данных

35 сек.

с сортировкой

14 сек.

14 сек.

14 сек.

40 сек.

с IDENTITY

8 сек.

Нет данных

Нет данных

Нет данных

rankNum

ROW_NUMBER()

RANK()

DENSE_RANK()

NTILE(3)

Удаление каждой 5-ой записи

       

без сортировки

5 сек.

     

с сортировкой

24 сек.

     

Как видите, функция ROW_NUMBER() работает намного быстрей без сортировки. Она также работает лучше, чем решение с IDENTITY, которое также не сортируется.

Функции RANK() и DENSE_RANK(), как мы обнаружили раньше, без сортировки работают неверно. NTILE() показывает очень маленький прирост производительности, около 10%. Это можно объяснить.

Как я упоминал ранее, оптимизатор использует соединения с использованием вложенных циклов для реализации функции NTILE(). Для больших наборов данных, без индексов (в нашем случае), соединения с использованием вложенных циклов могут быть очень неэффективными. Однако, вы обнаружите, что в плане выполнения они ничего не стоят (смотрите рис.6), так как сортировка помогает уменьшить количество ресурсов, используемое соединениями с использованием вложенных циклов.

Рис.6

Когда сортировка отсутствует (смотрите рис.7), соединения с использованием вложенных циклов стяновятся намного более затратными и почти "съедают" прирост производительности от отсутствия сортировки.

Рис.7

Помощь индексов

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

Возьмите любую таблицу с множеством столбцов и записей (или создайте и наполните таблицу, как в листинге 6). Затем создайте разные индексы и протестируйте функции ранжирования. Вы обнаружите, что для покрывающих запросов оптимизатор не будет использовать оператор Sort. Именно это делает функции ранжирования такими же быстрыми, или даже быстрее, чем функции выражением в "order by".

Заключение

В этой статье описаны функции ранжирования и их функционирование. Методы, описанные здесь, в некоторых случаях могут увеличить производительность функций ранжирования в 3-5 раз. К тому же, в этой статье описаны некоторые распространенные тенденции изменения поведения ORDER BY с выражениями.

[В начало]

ССЫЛКИ НА СТАТЬИ

Статьи на русском языке

How to: Replication
Paul Ibison
В статье представлены рекомендации по общим вопросам организации репликации баз данных SQL Server 2000, а также предлагаются варианты разрешения некоторых ошибочных ситуаций, связанных с репликацией.

Полезные недокументированные команды DBCC в SQL Server 2005
Alexander Chigrik
DBCC является аббревиатурой "Database Consistency Check". Команды DBCC обычно используются для проверки физической и логической целостности базы данных, а также используются для множества других задач.

Настройка операторов SQL в Microsoft SQL Server 2000
Kevin Kline, Claudia Fernandez
Эта статья охватывает базовые методы, используемые для настройки операторов SELECT в Microsoft SQL Server – реляционной СУБД. Мы обсудим возможности, предоставляемые графическим интерфейсом в Microsoft SQL Enterprise Manager или в Microsoft SQL Query Analyzer, а также дадим краткий обзор средствам настройки запросов Quest Software.

На что обратить внимание при выборе СУБД для Хранилищ данных
Intersoft Lab
Опыт Intersoft Lab как поставщика ХД и BPM-систем для российских банков показывает, что сегодня, чтобы удовлетворить требования разных заказчиков, информационно-аналитическая система должна быть мультиплатформенной. В каждом случае при выборе в пользу той или иной СУБД заказчик руководствуется собственной ИТ-стратегией, а если таковая не формализована на бумаге, то набором критериев, общих для всех и специфичных для конкретного клиента. Среди них на первом месте, как правило, стоит состав и масштаб решаемых задач, и, соответственно, требования к объемам обрабатываемой информации и производительности СУБД, уже сделанные инвестиции в ИТ и т.д. Поэтому поставщик должен предложить заказчику не только широкий набор прикладной функциональности для создания управленческой системы, но и выбор платформы для построения Хранилища данных, которая отвечает его требованиям.

Data Mining - oт сырых данных к полезным решениям
megaputer.ru
Мы живем в век информации. Трудно переоценить значение данных, которые непрерывно собираются в процессе человеческой деятельности, в управлении бизнесом или производством, в банковском деле, в решении научных, инженерных и медицинских задач. Мощные компьютерные системы, хранящие и управляющие огромными базами данных, стали неотъемлемым атрибутом жизнедеятельности как крупных корпораций, так и даже небольших компаний. Тем не менее, наличие данных само по себе еще недостаточно для улучшения показателей работы. Нужно уметь трансформировать сырые данные в полезную для принятия решений информацию. В этом и состоит основное предназначение технологий Data Mining.

Назначение систем Data Mining
Intersoft Lab
Широкое распространение программного и аппаратного обеспечения для Хранилищ данных приводит к тому, что компании получают возможность собирать данные легко и "с избытком". И теперь для поддержания конкурентоспособности без средств Data Mining уже не обойтись, тем более что они становятся всё более и более доступными.

Взять от железа все
Кевин Клайн
Просматривая обсуждения на форумах по SQL Server или получая сообщения из новостной рассылки, посвященной Microsoft SQL Server, можно ознакомиться со многими вопросами на предмет установки и настройки аппаратного обеспечения. Ведь в действительности многие проблемы, с которыми сталкиваются специалисты по ИТ, являются прямым следствием неумения правильно спроектировать аппаратную часть. Я проработал много лет и как администратор базы данных, и как разработчик, но до сих пор не уделял особого внимания задаче идеальной настройки корпоративных серверов. Думаю, такой момент настал — пора решать ключевые проблемы построения хорошо отлаженных серверов SQL Server с самого начала.

Новые возможности обеспечения безопасности SQL Server 2005
Каленик А. И.
Книга представляет собой практическое пособие по освоению и использованию новых возможностей Microsoft SQL Server 2005. Каждая глава книги содержит теоретическую часть, описывающую тот или иной элемент системы, синтаксис команд, а также практические примеры кодов на языке Transact-SQL, XML, XQuery, XPath, MDX и Visual Basic.Net. Книга состоит из введения и 4 частей, каждая из которых посвящена отдельному компоненту сервера. Издание адресовано профессиональным разработчикам и администраторам баз данных, а также всем желающим освоить новые мощные возможности Microsoft SQL Server 2005

Вышла новая предварительная версия (CTP5) VS Team Edition для разработчиков БД
Дмитрий Никонов
Линк для загрузки: http://download.microsoft.com/download/b/6/8/b6888e6b-8305-4616-a2d1-a11953404b09/TeamDataCTP5.exe

[В начало]

Англоязычные статьи

Other MDX Entities: Perspectives
William Pearson
As I state in Mastering Enterprise BI: Introduction to Perspectives, a member article of my series Introduction to MSSQL Server Analysis Services at Database Journal, Analysis Services 2005 extends the concept of a cube, and the more "geometrical" basis upon which it once rested, with the concept of the Universal Dimension Model ("UDM"). A UDM provides a bridge / abstract layer between users and one or more physical data sources, and combines OLAP and relational realms. Queries are, in turn, executed against the UDM through various client applications, providing the primary advantage of insulating the users from the multitudes of structural details that might exist within heterogeneous backend data sources. In addition to supplying a more intuitive data model with which to work, and enhanced performance for summary type queries, the UDM can also provide myriad additional benefits.

SSAS: Running mulitple MDX Queries
Darren Gosbell
This tip came up during a discussion amongst the Analysis Services Stored Procedure team and Chris Webb just posted about it too.

Transact-SQL Query SQL Server Performance Tuning Tips
sql-server-performance.com
This tip may sound obvious to most of you, but I have seen professional developers, in two major SQL Server-based applications used worldwide, not follow it. And that is to always include a WHERE clause in your SELECT statement to narrow the number of rows returned. If you don't use a WHERE clause, then SQL Server will perform a table scan of your table and return all of the rows. In some case you may want to return all rows, and not using a WHERE clause is appropriate in this case. But if you don't need all the rows returned, use a WHERE clause to limit the number of rows returned.

Uncovering Linked Servers
Brian Knight
A little known feature that SQL Server offers is linked servers. Linked servers give the developer the option to use distributed queries and are a vital part of SQL Server's scalability.

Tips on Optimizing SQL Server Indexes
sql-server-performance.com
All the tips provided on this website about indexing are general guidelines. As with any general guideline, there are exceptions. Because of this, it is a good idea to test out various indexing strategies for the most common queries run against your database. Only by testing different strategies against your queries can you be sure that you have fully optimized your database. [6.5, 7.0, 2000] Updated 4-3-2006

Techniques for Indexing Low-Selectivity Columns in SQL Server
Merrill Aldrich
Most of us have probably faced this situation at one time or another: there's a deceptively simple query in your system that's performing poorly:

SELECT from a view slower than "equivalent" SELECT from the base table
Bart Duncan
Sometime we get complaints that a query is slower than it could be because a filter isn’t pushed very deeply down into a plan. For example, consider this hypothetical poor performance scenario (my apologies in advance for the lack of normalization):

SQL Server as an IDS Tool
Yaroslav Pentsarskyy
Intrusion Detection Systems are a great tool for security, but they have suffered from information overload with security professionals struggling to dig through the data. New author Yaroslav Pentsarskyy brings us a look at how SQL Server helped him find security issues.

SSIS: Improve Debugging in Katmai
Jamie Thomson
The next version of SQL Server (codenamed katmai) is currently in the planning stages so if you want new functionality to be included, now is the time to get your requests into Microsoft via Microsoft Connect.

SSIS: Loading a Kimball data warehouse using SSIS
Jamie Thomson
I have just been watching Joy Mundy's webcast "Loading a Kimball method data warehouse using SQL Server Integration Services". I highly recommend it - Joy has done great job in outlining the basic skeleton for loading a data warehouse and covers some valuable concepts such as:

SSIS: Destination Adapter Comparison
Jamie Thomson
I recently had cause to look into the various ways that I could load data from the SSIS pipeline into SQL Server. There are three destination adapters for doing this:

Rather Ripped (Select All in Service Pack 1)
Brian Welcker
If you've applied Service Pack 1 to your SQL Server 2005 Reporting Services installation (I hope you did, as there are lots of good things in it), you might have noticed the disappearance of "Select All" from the drop down list for multi-valued parameters.

Data Access Tracing in SQL Server 2005
Bob Beauchemin, Jennifer Perret, Acey Bunch
Learn how to apply the new tracing functionality in Microsoft data access technologies such as ADO.NET 2.0, MDAC 2.82, SQL Server Native Client, and the JDBC driver; and in the SQL Server network protocols and the Microsoft SQL Server 2005 database engine. (20 printed pages)

Back on Locking - Incremental Numbers using MAX()+1 and PK Violations
Tony Rogerson
How many places have you seen or used this bit of SQL to get the next number and insert it?

Collation Change, this time it's for real
Louis Davidson
I had written a quickie article () back in February about changing table collations, and it has actually come in handy (though it was a bit naive, not really thinking about having to change the change the collations of every table in the database, plus all of the code.) So I figured I would update my article for doing it for real. (When I do our largest database I may update it again to mention performance.)

SQL Server 2005 upgrade hurdles
Serdar Yegulalp
Few people planning to upgrade to SQL Server 2005 will start from absolute scratch. Most will migrate to 2005 either from another database product entirely or from an earlier version of SQL Server. In this article I'll look at issues that may arise specifically when upgrading an earlier version of SQL Server to 2005.

Users Declare: Thumbs Up (Mostly) For Microsoft’s BI Stack
Stephen Swoyer
Microsoft’s push into business intelligence (BI) client tools is primed for success, say users, largely because SQL Server 2005 gets just about everything right

SSIS: Is SSIS a professional data integration tool?
Jamie Thomson
Steve Sauer (I'm guessing that is his name) is writing a diploma thesis in which he is comparing various data integration suites including BO Data Integrator, Informatica and various others. And SSIS of course (otherwise why would I be writing this post).

Service Broker: When is DEFAULT not the default?
Bob Beauchemin
When I first heard about it, I didn't think the DEFAULT contract in Service Broker had the potential to cause confusion. Goes to show what I know. The problem comes up when you assume "no specification" means "use DEFAULT". Not always...

The Start of An Answer For Scott: Temp Tables and Recompiles
Ward Pond
Kimberly Tripp, one of the most incredibly astute SQL poeple on the planet, calls her blog, "Improving *my* SQL skills through your questions". I would never steal her line, but after a bit of research on MSDN this afternoon, I can certainly relate to it, thanks to Scott Whigham of LearnSQLServer.com.

XBRL or Master Data Management?
Robert D. Kugel
Master data management (MDM) and eXtensible Business Reporting Language (XBRL) are two key technologies that promise to address important information management issues. Ventana Research believes both will enable companies to reduce the cost, time and effort needed to collect, analyze and use information, whether for visibility, decision support or process execution. Some observers may see them as competing approaches, but in practice each has capabilities best suited to some applications and not others. Even where they overlap, the two may not be mutually exclusive. We advise companies that have not yet begun investigating XBRL and MDM to do so immediately, and all organizations should begin developing skills in using them.

Considerations for Data Warehousing
Vincent Rainardi
When purchasing hardware infrastructure for a data warehouse and setting up the databases, what factors should we take into considerations? What RAID levels are suitable for stage, ODS and DDS databases? Do we need to put the fact tables on separate disks? How would the indexing strategy affect the disk layout? Is it necessary to setup a failover clustering? Is the memory requirement for data warehousing larger than OLTP systems? What are the optimum database settings for data warehouse databases? Are they different from transactional processing databases? For dimensional database, should we set recovery mode to full or simple?

Database Mail in SQL Server 2005
Muthusamy Anantha Kumar
The SQL Mail problems, that we faced in SQL Server 7.0 and 2000, are no more. SQL Server 2005 supports and uses SMTP email now and there is no longer a need to MAPI client to send email. In SQL Server 2005, the mail feature is called Database Mail. In this article, I am going to demonstrate step-by-step, with illustrations, how to configure Database Mail and send email from SQL Server.

10 ethical issues confronting IT managers
Jeff Relkin
In "10 ethical issues raised by IT capabilities," we examined ethical issues raised by IT capabilities, issues that all of us as technology professionals need to consider as we go about our duties. This time, we take a look at ethical issues more specific to management--and not necessarily just IT management. Once again, one of our themes is that advances in technology, just like advances in any other area of endeavor, can generate societal changes that should cause us to reexamine our behavior. The dynamic nature of civilization means some components of ethical codes that were perfectly appropriate in previous generations may no longer apply. Although space limits us to 10 issues, the ones we examine here are based on five main categories of particular interest to technologists: privacy, ownership, control, accuracy, and security. As in the previous article there are more questions than answers.

SQL Reporting Services and the Unattended Execution Account
Russell Christopher
Thanks to John Gallardo and Radu Grama for engaging in a very interesting conversation from which I’m cribbing the following information!

Get certified in SQL Server to prove your skills and improve your prospects
Jason Fisher
Today’s IT marketplace is nothing if not competitive, and with potentially hundreds of qualified candidates for the most desirable top-tier positions, you need something to prove your skills and to set you apart from the masses. That “something” can be certification, which can really make your resume stand out—or even get you a promotion and better salary in your current company.

Implementing Login Statistics Using SQL Server 2005 Trace Feature
ruslan
Login statistics is a useful mechanism to keep track of login activity on a server system. Availability of such information is a requirement for systems to be certified under Common Criteria. SQL Server 2005 SP1 does not offer such information. This post will discuss ways to implement it using existing features of SQL Server 2005.

Summary of Join Properties
Craig Freedman
The following table summarizes the characteristics of the three physical join operators which I described in my three prior posts.

NUMA Scenarios
Microsoft
On computers that have many CPUs, nonuniform memory access (NUMA) hardware can significantly improve performance by pairing dedicated memory with CPUs. This topic presents some configurations of NUMA, CPU affinity, and connection affinity that can further improve performance for specific scenarios. The following settings affect these configurations:

Track resource usage with SQL Server 2005 SQL OS
Jeremy Kadlec
To achieve optimal performance, SQL Server and Windows depend on one another, as does Windows and the hardware platform. A problem in any one area can severely impact the other two. Unfortunately, gleaning insight into SQL Server's hardware usage through Windows in any supported manner has been difficult, at least with older versions of SQL Server. Only a few commands were available to capture statistics, yet this information was needed in troubleshooting performance issues. To address these needs, SQL Server 2005 ships with the SQL OS a means to view key resource usage within SQL Server, in Windows and in the hardware platform.

SQL Server, PostgresSQL and Fish Curry
Tony Davis
An interview with Adam Machanic. At Tech Ed 2006 in Boston I cornered Adam for 45 mins and talked to him about SQL Server 2005, stored procedures, beer music and various other things. I finally got round to transcribing the interview. Enjoy! –Tony Davis, Simple-Talk editor.

Scott's Answer, Completed: Temp Tables and Recompiles In SQL Server 2005
Ward Pond
When I posted yesterday on this topic (first broached here), I'd found some good information pertinent to SQL Server 2000 in Tom Davidson's MSDN article. However, at that point I hadn't had much luck finding the equivalent information for SQL Server 2005.

Read Only Tables
Steve Jones
Do you know how to setup a read-only table in SQL Server. Steve Jones takes a look at a few methods to achieving this and examines the pros and cons of choosing different methods.

Building Effective SQL Server Notification Applications Part 2. Top 10 Enhancements in SQL 2005 Notification Services
Joe Webb
When Microsoft created SQL Server Notification Services (SSNS) as an add-on to SQL Server 2000, they endeavored to create a robust framework for developing and hosting scalable notification applications using technologies already familiar to many developers – XML, Transact-SQL, the .NET Framework, and of course SQL Server 2000. In SQL Server 2005, Microsoft has fully integrated SSNS into the product and has extended its intrinsic capabilities. It offers improvements in such areas as performance, manageability, and flexibility.

SQL Server write behaviour with multiple files in a file group
Tony Rogerson
You will have no doubt seen or heard branded about that its good to use multiple files for a file group but you’ve always wondered why?

Database Programming: A Brief Note On The Second OPENROWSET Trick
Ward Pond
Back in March, I presented the "second OPENROWSET trick", a technique for loading a flat file into a single column of a single row of a table.

SSAS Best practice: Clear the cache when doing MDX scripting
Peter Kol
This was taught to me by bitter experience.

Dates to a person's next birthday
Louis Davidson
The question was raised on the forums the other day about how to figure out how many days until the next birthday for a person. It was a question that I had never answered before, and a technique that I am not sure why I had never had to employ before. It seems so common really.

Importing SQL Scripts in to the Database Project
GertD
One of the new things you will find in CTP5, is the Import Script Wizard. This wizard allows you to select a existing .SQL script file and import the DDL statement in to the database project as schema objects.

New Project Wizard
GertD
CTP5 also introduces the New Project Wizard, which makes it a lot easier to create your initial database project.

So close...
GertD
Today we made what is hopefully the last change for CTP5; one last code change (7 lines in 2 files), one setup fix and the build is running as I write this blog. If everything goes well, build 50727.145 will be CTP5 of "Visual Studio Team Edition for Database Professionals" and be available for download this upcoming Monday afternoon.

Should I use SQL Server Express or Developer Edition for my DesignDB instance
rwaymi
Datadude requires a local instance of SQL Server to use to validate our project. We create transient (i.e. temporary) databases to support our projects. Don't confuse this with the SQL Scripts, however, the scripts are always the truth.

How do I... Display summary values in Microsoft Access using UNION?
Susan Harkins
SQL's UNION operator lets you combine data from two or more tables or queries--but that's not all it can do. Here are some handy tricks for for using UNION to provide a quick-and-dirty display of detail records and summary values in an Access database

Dates to a person's next birthday
Louis Davidson
The question was raised on the forums the other day about how to figure out how many days until the next birthday for a person. It was a question that I had never answered before, and a technique that I am not sure why I had never had to employ before. It seems so common really.

Executing a Package from Visual Basic
Brian Knight
So you've created a SQL Server package and now you're ready to integrate it into your Visual Basic application? In this series, Brian Knight will show you how to use the DTS object model to execute a DTS package from Visual Basic.

How Do I… create an XML document from undefined legacy data?
Edmond Woychowsky
Nebulous is a great word, not only is it fun to say, it is also useful in describing the requirements for a project that I worked on recently. The requirements went something like this; take a flat file, that was produced by an upstream mainframe application and produce an XML document for a downstream application. No mention was made of what the input would look like, beyond being a flat file. In fact, the only place that I caught a break was on the output, XML is pretty malleable, apply XSLT and it will look like anything that the "Powers That Be" want.

Favorite SQL Server 2005 Features, Big and Small
Brian Moran
What’s your favorite SQL Server 2005 feature, big or small? What aspect of the new product has most changed the way you design, build, or maintain Microsoft-based databases and applications? SQL Server 2005’s long development cycle gave the SQL Server community, including its pundits, years to speculate about how quickly people would adopt features such as SQLCLR--or whether people would adopt them at all. Now, I’m curious. What parts of the product have proven to be most important to you?

Mastering OLAP Reporting: Prototype KPIs in Reporting Services
William Pearson
In Mastering OLAP Reporting: Reporting with Analysis Services KPIs, a member of my Database Journal MSSQL Server Reporting Services series, we introduced an exciting new feature within MSSQL Server 2005 Analysis Services ("Analysis Services"), Key Performance Indicators ("KPIs"). In that article, we focused upon using Analysis Services KPI structures within Reporting Services. Our practice exercises centered upon preparing a scenario within which we used KPIs that existed in an Analysis Services cube, presenting them within a report we created within Reporting Services.

The Enterprise Library for .NET Framework 2.0
David Poole
What does a SQL Server developer care about the Enterprise Library? SQL Server guru David Poole is starting to work with .NET and brings us his perspective on what this library is and how it benefits those who develop against SQL Server.

SQL Server 2005 Maintenance Plans
Press Release
SQLServerCentral.com is proud to release a new book on SQL Server 2005 Maintenance Plans. This new title dives deep into the structure of maintenance plans, the Integration Services-like environment and provides details how each task works. Get your copy today!

Understanding the new Try/Catch statement in SQL Server 2005
Arthur Fuller
Error handling has come a long way in SQL Server 2005. Arthur Fuller says that if you're using Raiserror() instead of the new Try/Catch statement, it's time to wake up and smell the coffee!

A way to load a calendar table
Louis Davidson
By no means is this the defacto standard calendar table. But, it is a very basic one that I quite often use in databases, as a calendar, or as a date dimension for a data warehouse. You can extend with holidays, etc, if you want, but that varies too much for a basic example like this. There are a few examples of how to load holidays out there, such as:

Ontology - a dimension of data quality
Donald Farmer
In a previous post I described some premises of data quality that I use to classify data quality issues.

Corporate Coder : Reporting
elandes
A couple of new articles. Just a bit of self promotion here, and I'm looking for some feedback. I've recently published 2 articles on Crystal Alliance, and was hoping for some feedback on these. One is called "Creating a Task Summary Crystal Report from Project Server" and the other is called "Creating a Project Velocity Crystal Report using Microsoft Project Server". These articles should help introduce you to the Project Server 2003 database structure. Hopefully, soon, I can revamp these to go against Project Server 2007 database structure.

Old Model DA Model
John Schley
True business value lies in using the data model as an entry point for a program of data management that treasures data as the most valuable corporate asset.

Stress
Andy Warren
As a DBA, stress is probably a given in your career, but are you aware of the effects on others. Andy Warren takes a look at the effects of stress, how you can identify them and a few ways to cope.

[В начало]

ФОРУМ SQL.RU

Самые популярные темы недели

Вышел русский СТР SQL Server 2005!!!
Баг в [ORDER BY] на который MSSQL закрыл глаза
Sql server в интернет ...
Пропали данные!
Выборка календарного периода
как сделать distinct по одному полю
Mirror sql2005
Чем отличаются уникальный ключ и уникальный индекс?
Добавление данных в таблицу с Identity (SQLServer)
Windows 2003 и MSSQL 2000.
Всё те же самые траблы с Бэкапом....Help!!!Please!!!
Очень быстрая запись данных
Где и как хранится информация об индексах
Убить процесс
Помогите с запросом
Опять про ограничения целосности и т.п.
MSDE 2000 на двух головом пне...
Как получить текст ошибки из хранимой процедуры?
пивот, курсор и еще чтонить
Какие блокировки использовать???

[В начало]

Вопросы остались без ответа

sql 6.5 и бэкап - помогите
Localized SQL DMO
вопрос по 823 ошибке и переносу базы
sql server 2005
create function with schemabinding VS udt
1С 8.0 + MSSQL 2005 Express
SQL 2000 + MMC + ntdll.dll + XP SP 2 = Error
XP_MAIL.DLL Extended Stored Procedure SMTP,POP3 to MSSQL2000
версии серверов...
SQL Server 2005 SP1 Russian is here
Паблишер-Подписчик. Мерже. Добавить нового подписчика.
W2000S+MSSQL2000 problem
Задача №87 на sql-ex.

[В начало]

КНИГИ

Microsoft SQL Server. Полезные алгоритмы от SQL.RU (+CD)

Составитель - Кошкин Сергей. Авторы и переводчики: Брылёв Вячеслав, Гавриленко Сергей, Гладченко Александр, Денисенко Александр, Денищенко Николай, Кривонос Наталья, Наумова Ирина, Рахманов Мартин, Уфимцев Глеб

ISBN: 5-469-01405-3; Штрих-код: 9785469014058; Объем: 272 с.; Формат: 60х90/16; мягкая обложка; Тираж: 3000; книга в типографии до 16.09.06.

В книге собраны статьи, написанные активными участниками сформировавшегося вокруг сайта SQL.RU сообщества. В первой части книги собраны полезные алгоритмы, которые заслужили признание у многих разработчиков приложений баз данных. Во второй части книги представлены статьи, посвященные вопросам безопасности MS SQL Server и работающих с ним пользовательских приложений. На прилагаемом компакт-диске находятся примеры из книги, а также дополнительные авторские презентации в формате PowerPoint.

Краткое содержание

Введение.
ЧАСТЬ I. ПОЛЕЗНЫЕ АЛГОРИТМЫ
Древовидные структуры в базах данных, соответствующих стандартам SQL.
Эффективный метод постраничной выборки.
Метод быстрой сортировки натуральных чисел.
Протоколирование изменений структуры БД и данных.
Триггер на событие соединения.
Управление одновременным редактированием данных несколькими пользователями.
Определение недоступности линкедсервера.
Расслоение таблиц в базах данных.
Служба событий в MS SQL Server.
Методика выбора плана исполнения запроса в SQL Server 2000.
ЧАСТЬ II. БЕЗОПАС-НОСТЬ
Безопасность Microsoft SQL Server 2000 с позиции разработчика.
Общая система безопасности приложений на предприятии.
Защита хранимых процедур от дешифрования
ЧАСТЬ III. АДМИНИСТРИРОВАНИЕ И АРХИТЕКТУРА SQL SERVER
Утечка кода.
Жертвы режима волокон.
Планировщик непривилегированного режима в SQL Server 2000.
Нежелательность сжатия файлов данных и журналов SQL Server.
Журнал транзакций SQL Server 2000.
Описание механизма доставки журналов в SQL Server 2000.
Резервное копирование баз данных SQL Server 2000.

[В начало]

#321<<  #322  >>#323
Rambler's Top100 Рейтинг@Mail.ru  Administrator: Обратная связь 
Copyright: SQL.Ru 2000-2013