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

СОДЕРЖАНИЕ

1.СТАТЬИ
1.1.Агрегат хэша (Hash Aggregate)
1.2.10 способов оптимизации полнотекстового индексирования в SQL Server
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа
 

 

СТАТЬИ

Агрегат хэша (Hash Aggregate)

По материалам статьи Craig Freedman: Hash Aggregate

В двух своих предыдущих статьях, я писал об операторе агрегации потока. Агрегат потока хорошо подходит для скалярных агрегатов и для агрегации с использованием индекса, который обеспечивает порядок сортировки по столбцу(цам) предложения GROUP BY или когда сортировка задана явно (например, указано предложение ORDER BY).
Следующий оператор агрегации, это агрегат хэша, который подобен хэш-соединению. Он не требует указания порядка сортировки, зато потребляет память и устанавливает блокировку (то есть, он не выдаёт результатов, пока не обработает всё, что у него на входе). Агрегат хэша является лучшим выбором для эффективной агрегации очень больших наборов данных.
Вот так выглядит алгоритма агрегата хэша в псевдокоде:

for each input row begin calculate hash value on group by column(s) check for a matching row in the hash table if we do not find a match insert a new row into the hash table else update the matching row with the input row end output all rows in the hash table

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

Память и её сброс

Как и хэш-соединение, агрегат хэша требователен к памяти. Перед исполнением запроса с агрегатом хэша, SQL Server оценивает количество элементов, чтобы понять, сколько памяти потребуется для исполнения этого запроса. В случае с хэш-соединением, будет храниться каждая скомпонованная строка, и поэтому требование к объёму используемой памяти будет пропорционально числу и размеру скомпонованных строк. Число соединяемых строк и количество элементов на выходе соединения никак не влияет на необходимый объем и конфигурацию памяти для соединения. Для агрегата хэша хранится по одной строке для каждой группы, так что требование к общему объёму памяти фактически пропорционально числу и размеру выводимых групп или строк. Если уникальных значений столбца(цов) в предложении GROUP BY не много, будет меньше групп и потребуется меньше памяти. Если уникальных значений столбца(цов) в предложении GROUP BY много, групп тоже будет много и потребуется больше памяти.
Что случается, если запрос выйдет за пределы доступной памяти? Как и в случае с хэш-соединением, при выходе за границы памяти начинается сброс строк в tempdb. Сброшены будут одна или несколько областей памяти или секций, включая некоторое число частично агрегированных результатов вместе со сброшенными хэшами дополнительных новых строк, попавших в эти области памяти или секции. Хотя сброшенные новые строки не будут в этот момент соединяться, их хеши будут разделены на несколько областей памяти или секций. По завершению процессинга всех поступивших на вход групп, подготовленные группы попадают в оперативную память и будут в цикле считываться и соединяться одновременно сразу все сброшенные секции. Разделив сброшенные строки на несколько секций мы уменьшаем размер каждой такой секции и, таким образом, уменьшаем риск того, что цикл повториться слишком много раз.
Обратите внимание, что, хотя дубликаты и являются большой проблемой для хэш-соединений, поскольку они приводят к перекосу в размерах секций хэша и мешают разделению работы на небольшие однородные блоки, дубликаты оказываются весьма полезны для агрегата хэша, так как они попадают в одну группу.

Примеры

Оптимизатор имеет тенденцию избирать агрегат хэша для таблиц с большим числом строк и групп. Например, имея только 100 строк и 10 групп, мы получаем сортировку и агрегат потока:

create table t (a int, b int, c int) set nocount on declare @i int set @i = 0 while @i < 100 begin insert t values (@i % 10, @i, @i * 3) set @i = @i + 1 end select sum(b) from t group by a |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Stream Aggregate(GROUP BY:([t].[a]) | DEFINE:([Expr1010]=COUNT_BIG([t].[b]), | [Expr1011]=SUM([t].[b]))) |--Sort(ORDER BY:([t].[a] ASC)) |--Table Scan(OBJECT:([t]))

Но когда строк становится 1000, а число групп достигает 100, мы получаем в плане агрегат хэша:

truncate table t declare @i int set @i = 100 while @i < 1000 begin insert t values (@i % 100, @i, @i * 3) set @i = @i + 1 end select sum(b) from t group by a |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Hash Match(Aggregate, HASH:([t].[a]), RESIDUAL:([t].[a] = [t].[a]) | DEFINE:([Expr1010]=COUNT_BIG([t].[b]), | [Expr1011]=SUM([t].[b]))) |--Table Scan(OBJECT:([t]))

Обратите внимание, что хэш берётся по столбцу GROUP BY. Предикат RESIDUAL в агрегате хэша используется для сравнения строк в хеш-таблице, чтобы ввести их, если мы имеем коллизии значений хеш-функции.
Также обратите внимание, что при использовании агрегата хэша отпадает необходимость в сортировке. Сортировка потребует больше памяти, чем агрегат хэша, так как мы должны сортировать 1000 строк, а агрегат хэша нуждаться в памяти только для 100 групп. Однако, если мы явно укажем сортировку, используя для этого в запросе предложение ORDER BY, мы снова получаем агрегат потока:

select sum(b) from t group by a order by a |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Stream Aggregate(GROUP BY:([t].[a]) | DEFINE:([Expr1010]=COUNT_BIG([t].[b]), | [Expr1011]=SUM([t].[b]))) |--Sort(ORDER BY:([t].[a] ASC)) |--Table Scan(OBJECT:([t]))

Если таблица становится достаточно большой, а число групп остается достаточно маленьким, в конечном счете, оптимизатор решит, что дешевле использовать агрегат хэша и сортировку после того, как выполнится агрегация. Например, имея 10000 строк и только 100 групп, оптимизатор решит, что лучше взять хэш и потом сортировать только 100 групп, чем сортировать целых 10000 строк:

truncate table t set nocount on declare @i int set @i = 0 while @i < 10000 begin insert t values (@i % 100, @i, @i * 3) set @i = @i + 1 end select sum(b) from t group by a order by a |--Sort(ORDER BY:([t].[a] ASC)) |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Hash Match(Aggregate, HASH:([t].[a]), | RESIDUAL:([t].[a] = [t].[a]) | DEFINE:([Expr1010]=COUNT_BIG([t].[b]), | [Expr1011]=SUM([t].[b]))) |--Table Scan(OBJECT:([t]))

DISTINCT

Точно так же как и для агрегата потока, агрегат хэша может использоваться для устранения дубликатов:

select distinct a from t |--Hash Match(Aggregate, HASH:([t].[a]), RESIDUAL:([t].[a] = [t].[a])) |--Table Scan(OBJECT:([t]))

Или несколько иначе, если мы хотим рассмотреть более интересный случай:

select sum(distinct b), sum(distinct c) from t group by a |--Hash Match(Inner Join, HASH:([t].[a])=([t].[a]), RESIDUAL:([t].[a] = [t].[a])) |--Compute Scalar(DEFINE:([t].[a]=[t].[a])) | |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1018]=(0) | | THEN NULL ELSE [Expr1019] END)) | |--Hash Match(Aggregate, HASH:([t].[a]), | | RESIDUAL:([t].[a] = [t].[a]) | | DEFINE:([Expr1018]=COUNT_BIG([t].[b]), | | [Expr1019]=SUM([t].[b]))) | |--Hash Match(Aggregate, HASH:([t].[a], [t].[b]), | | RESIDUAL:([t].[a] = [t].[a] | | AND [t].[b] = [t].[b])) | |--Table Scan(OBJECT:([t])) |--Compute Scalar(DEFINE:([t].[a]=[t].[a])) |--Compute Scalar(DEFINE:([Expr1005]=CASE WHEN [Expr1020]=(0) | THEN NULL ELSE [Expr1021] END)) |--Hash Match(Aggregate, HASH:([t].[a]), | RESIDUAL:([t].[a] = [t].[a]) | DEFINE:([Expr1020]=COUNT_BIG([t].[c]), | [Expr1021]=SUM([t].[c]))) |--Hash Match(Aggregate, HASH:([t].[a], [t].[c]), | RESIDUAL:([t].[a] = [t].[a] | AND [t].[c] = [t].[c])) |--Table Scan(OBJECT:([t]))

Этот план логически эквивалентен последнему плану в моей статье про агрегат потока, но тут вместо сортировок, агрегатов потока и соединения слиянием используется агрегат хэша и хэш-соединение. Мы имеем два агрегата хэша, которые устраняют дубликаты (один для "distinct b" и один для "distinct c") и еще два агрегата хэша для вычисления обоих сумм. Хэш-соединение "склеивает" результирующие строки вместе, чтобы сформировать конечный результат.

Подсказки

Вы можете использовать подсказки оптимизатору "ORDER GROUP" и "HASH GROUP" для того, чтобы принудительно вызвать агрегат потока или агрегат хэша соответственно. Эти подсказки затрагивают все операции агрегации во всём запросе. Например:

select sum(b) from t group by a option(order group) select sum(b) from t group by a option(hash group)

SQL Profiler

Вы можете использовать имеющийся в приложении SQL Profiler класс сообщений "Hash Warning" (в категории "Errors and Warnings") для обнаружения запросов с хэш-соединением или когда осуществляется сброс агрегата хэша. Сброс порождает ввод-вывод и может неблагоприятно повлиять на производительность. Для получения более подробной информации об этих сообщения см. Books Online.

[В начало]

10 способов оптимизации полнотекстового индексирования в SQL Server

По материалам статьи Hilary Cotter: 10 Ways to Optimize SQL Server Full-text Indexing

В этой статье, Хилари Коттер показывает несколько методов, которые Вы сможете использовать для улучшения работы полнотекстового индексирования в SQL Server (Full-Text Indexing - FTI). Кроме этого, Вы можете ознакомиться с его предыдущей статьёй об оптимизации полнотекстового поиска.

Производительности индексации всегда была "Ахиллесовой пятой" полнотекстового поиска в SQL Server. Хотя производительность самого поиска хороша (очень мало клиентов жалуется на скорость поиска), пользователи действительно жалуются (громко и часто) на то, как медленно идёт процесс индексации, особенно для больших таблиц.
В настоящее время, я использую 2GHz компьютер с гигабайтом памяти, и для моей тестовой базы данных индексация проходит со скоростью порядка 10000 строк в минуту. Десять тысяч в минуту означает, что мне потребуется приблизительно 1 час и 40 минут, чтобы проиндексировать таблицу с миллионом строк, или день, чтобы проиндексировать таблицу с 15 миллионами строк. Индексация в SQL Server медленна прежде всего из-за ее асинхронной схемы извлечения данных (фактом является то, что у конкурентов это делается также медленно), а не из-за каких то особенностей внутренней организации SQL FTI (некоторые из которых, так или иначе, были пересмотрены для SQL 2005), я сосредоточусь на том, что Вы можете сделать для улучшения производительности FTI уже сегодня.

1. Используйте режим отслеживания изменений с фоновым обновлением индекса

Самый простой способ повысить производительность полнотекстовой индексации состоит в том, чтобы использовать отслеживание изменений (Change Tracking) с опцией "Update Index in Background".
Можно объяснить почему: Когда Вы индексируете таблицу (FTI, подобно "стандартному" индексу SQL Server, работает потаблично), Вы можете выбрать полную популяцию, возрастающую популяцию или отслеживание изменений. Когда Вы выбираете полную популяцию, каждая строка в имеющей полнотекстовый индекс таблице будет извлечена и проиндексирована. Этот процесс выполняется в два шага. Сначала, Вы (или Enterprise Manager) выполняете представленную ниже хранимую процедуру:

sp_fulltext_getdata CatalogID, object_id

Обратите внимание: Вы можете получить object_id для вашей таблицы, выполнив команду SELECT object_id('TableName'), где TableName - имя вашей таблицы.
Это даст нам возможность получить список значений первичных ключей (или уникальных идентификаторов) для имеющей полнотекстовый индекс таблицы. Так, если у таблицы 50 миллионов строк, результирующий набор будет в 50 миллионов строк значений первичного ключа конвертированного в varbinary(450) (если у имеющей полнотекстовый индекс таблицы имеется столбец со штампами времени, он тоже попадёт в результирующий набор).
Эта хранимая процедура возвращает также последний для базы данных штамп времени, который будет храниться MS Search (механизм Microsoft Search Services) в качестве ссылки для обеспечения возрастающей популяции.
Например, ниже показан результат, который MS Search возвратит после исполнения следующей инструкции:

sp_fulltext_getdata 10, 517576882 0000000000000490 ------------------ ----------------------------------- 0x000000000000048B 0x3131312D31312D31313131 0x000000000000044F 0x3131312D31312D31313132 0x0000000000000450 0x3131312D31312D31313133

Первая строка в выводе: 0000000000000490, является штампом времени для базы данных. 0x000000000000048B - столбец штампов времени для строки, которая индексируется, а 0x3131312D31312D31313131 - значение первичного ключа для первой строки в индексируемой таблице.
После того, как все результирующие наборы для всех штампов времени и значений первичного ключа будут возвращены, MS Search будет запускать процедуру sp_fulltext_getdata для каждой строки индексируемой таблицы. Это будет выглядеть следующим образом:

sp_fulltext_getdata 10, 517576882, 0x3131312D31312D31313131,1

Если в базе данных 50 миллионов строк, эта процедура будут выполнена 50 миллионов раз. Задумайтесь над этим. С другой стороны, если Вы используете возрастающую популяцию, MS Search использует в качестве инициализации:

sp_fulltext_getdata 10, 517576882, 0000000000000490

(где 0000000000000490 - штамп времени после последнего запроса) и затем приступит к исполнению:

sp_fulltext_getdata 10, 517576882, 0x3131312D31312D31313131,1

Процедура будет исполнена для каждой строки в таблице, которая используется в полнотекстовой индексации. Тут: 0x3131312D31312D31313131 - значение первичного ключа для первой строки. Таким образом, если в вашей базе данных имеется 50 миллионов строк, эта процедура будут также выполнена 50 миллионов раз. Почему? Да потому, что даже при выборе возрастающей популяции, MS Search должен выяснить точно, какие строки были изменены, обновлены и удалены. Ещё одной проблемой с возрастающей популяцией может стать то, что при таком выборе индексироваться или переиндексироваться строка будет даже в том случае, если изменение было сделано в не относящемся к полнотекстовому индексу столбце. [Начинаете понимать, почему люди жалуются на скорость индексации? - Ed.]
Хотя возрастающая популяция в целом быстрее полной популяции, Вы можете столкнуться с тем, что для больших таблиц любая из них будет отнимать много времени. Мое "правило буравчика": Если Вы вносите изменения в большую часть таблицы (можно сказать, что изменению подвержены более 10 процентов), выполняйте полную популяцию, а не возрастающую. Именно поэтому я рекомендую включить отслеживание изменений с фоновым обновлением или обновлением по расписанию. Если Вы выбираете этот режим, Вы увидите, что MS Search начнёт также:

sp_fulltext_getdata 10, 517576882, 0x3131312D31312D31313131,1

Процедура будет запущена для каждой строки в таблице, для которой включено отслеживание изменений. И снова значение 0x3131312D31312D31313131 - это значение первичного ключа первой строки. Потом, о каждой полученной из индексируемого столбца строке, которая подверглась изменению после первоначальной полной популяции, будет сохранена отметка в таблице sysfulltextnotify (в базе данных, которая индексируется). После этого, MS Search будет запускать процедуру только для строк, которые присутствуют в этой таблице, а потом удалит их из таблицы sysfulltextnotify.
Чтобы увидеть это в действии при индексировании базы данных pubs, включите для неё отслеживание изменений, и проведите следующий эксперимент:

exec sp_fulltext_database N'enable' GO exec sp_fulltext_catalog N'test', N'create' GO exec sp_fulltext_table N'[dbo].[authors]', N'create', N'test', N'UPKCL_auidind' GO exec sp_fulltext_column N'[dbo].[authors]', N'au_lname', N'add', 1040 GO exec sp_fulltext_column N'[dbo].[authors]', N'au_fname', N'add', 1040 GO exec sp_fulltext_column N'[dbo].[authors]', N'phone', N'add', 1040 GO exec sp_fulltext_column N'[dbo].[authors]', N'address', N'add', 1040 GO exec sp_fulltext_table N'[dbo].[authors]', N'activate' GO exec sp_fulltext_table N'[dbo].[authors]', N'start_change_tracking' GO exec sp_fulltext_table N'[dbo].[authors]', N'start_background_updateindex' GO

После этого сделайте следующее:

update authors set au_lname=au_lname where au_lname < 'm%' go select * from dbo.sysfulltextnotify

Подождите несколько секунд перед повторным запуском второго запроса, и Вы увидите, что MS Search обработал ваши изменения и удалил записи из таблицы.
Как можно видеть, опция отслеживания изменений даёт лучшую производительность, чем возрастающая или полная популяция, если имеется не много изменений. Если изменится существенная часть вашей таблицы, полная популяция более эффективна.
Если полнотекстовая индексация выполняется для испытывающей большую нагрузку изменений базы данных, Вам стоит рассмотреть возможность плановой вместо непрерывной популяции. Это особенно удобно, если есть возможность запланировать обновление в период низкой нагрузки (например, ночью или в выходные дни). Чтобы запланировать обновление индекса в фоновом режиме, выполните следующее:

exec sp_fulltext_table N'[dbo].[authors]', N'update_index'

Обратите внимание: Имейте в виду, что изменения, сделанные над текстовыми типами данных с использованием WRITETEXT или UPDATETEXT не будут отмечены для индексирования с опцией отслеживания изменений.

2. Рассмотрите возможность использования выделенного сервера

Интенсивные изменения в таблицах во время индексирования могут породить проблемы блокировок, и потому, если допустима актуализация каталог с некоторой задержкой, а влияние работы механизмов MS Search должно быть сведено к минимуму, стоит рассмотреть возможность использования для индексации выделенного сервера. Прежде чем выносить эту задачу на выделенный сервер, удостоверяясь, что этот сервер имеет копию необходимой таблицы, по которой будет выполняться полнотекстовое индексирование и экспорт каталога (для получения подробностей см. статью КВ240867). Если изменения должны индексироваться в реальном масштабе времени или около того, этот вариант не подходит.

3. Конвертация всех данных в текст

Как Вы помните, SQL Server 2000 предоставляет возможность сохранения больших документов сложного формата и структуры (таких, как PDF) в их родном формате, помещая их в столбце с типом данных image. Указывая расширение для файла документа, Вы, таким образом, гарантируете, что к документам будет применен соответствующий им iFilter. Однако, как можно было ожидать, это влияет на производительность, и мой опыт говорит, что Вы можете значительно повысить исходную скорость индексирования, если будете хранить ваши документы в виде простого текста. Поставляемая с SDK платформы утилита FiltDump позволяет избавиться от iFilter, и предоставляет возможность видеть, как iFilter интерпретирует ваш документ. Для этого используется ключ -b, вот пример:

FiltDump -b MyDocument.pdf > MyDocument.txt

Удивительное дело, но производительность индексации не очень чувствительна к размеру хранимых в индексируемых столбцах текстовых документов. Фактически, для документов до 8 КБ я не наблюдал большой разницы при использовании varchar, char или text. В одном из тестов, я брал 40000 документов со средним размером около 6КБ и сохранял их в таблице, как varchar. Потом я создал другую таблицу, сохраняя в ней те же самые документы как текст, и скорость индексации была практически та же самая (опция "Text in Row" не влияла на скорость индексации). Скорость индексирования, однако, весьма чувствительна к объёму символов форматирования в ваших документах и к скорости используемого iFilter.
Я провёл испытание, декомпилировав статьи MSDN и сохранив их в базе данных в преобразованном к документам Word виде. Всего было 460000 документов для полнотекстового поиска. Когда же документы были сохранены в виде HTML, индексация стала выполняться на 23 процента быстрее, а когда они были сохранены как простой текст, я получил ещё дополнительное 10-процентное увеличение скорости индексации.
Если все-таки выбрано хранение документов в столбце с типом данных image, они будут извлекаться в папку %systemroot%\temp\Gthrsvc. Вы можете изменить эту временную папку (например, переложить её на массив RAID1) с помощью следующего ключа системного реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\TempPath

Я ещё раз хотел бы рекомендовать Вам добиваться повышения производительности, связанного с данными в image - полях, сохраняя ваши документы в полях с типами: text, char или varchar.

ПРОДОЛЖЕНИЕ СЛЕДУЕТ

[В начало]

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

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

Обзор ADO.NET Entity Framework
Джон Папа
В следующем выпуске Visual Studio® с кодовым названием "Orcas" в ADO.NET будет представлена новая архитектура Entity Framework. Она позволяет разработчикам обращаться к данным, используя объектную модель вместо логической или реляционной модели данных. Entity Framework помогает абстрагировать логическую схему данных в концептуальную модель и обеспечивает несколько способов взаимодействия с концептуальной моделью через службы Object Services и нового поставщика данных, называющегося EntityClient. В статье этого месяца обсуждается, что такое архитектура Entity Framework, как она применяется в приложении и как с ее учетом разрабатывать и программировать.

CTP3: Declarative Management Framework. Введение
Алексей Халяко
Управление сервером баз данных можно разбить на два типа "жизненных циклов": управление сервером и управление приложениями. Управление приложениями включает в себя все, что необходимо для поддержки работы приложений и сохранности и актуальности данных, хранимых на сервере

СТР 3: Declarative Management framework. Пример
Алексей Халяко
Возьмем простую задачу: необходимо запретить все имена таблиц, которые начинаются на Test. Для этого необходимо создать условие, которое будет проверять: имя таблицы не равно "Test%". Для этого в Management Studio:

Масса полезного о SQL Server 2008 (Katmai)
Anton Belousov
Сегодня утром в RSS фиде наших зарубежных коллег наткнулся на крайне полезный пост. Позволю многое из него процетировать и в нашем блоге, но уже на русском

Dev'Days 2007: А Вам будет интересно услышать про ADO.NET vNext, Astoria & Jasper из уст самих разработчиков?
Daniel Kornev
Друзья, Вы могли уже многое прочитать о ADO.NET vNext и инициативах, которые созданы вокруг этой технологии. Как Вы, наверное, знаете, на мероприятиях типа TechEd , MIX , PDC наши коллеги из Data Programmability Team как раз и рассказывают про все эти технологии. А Вам будет интересно услышать про эти технологии на Днях Разработчика этой осенью ?

18 июня 2007 года выпущено второе кумулятивное обновление для SQL Server 2005 Service Pack 2
Александр Гладченко
В прилагаемой к обновлению статье базы знаний № 936305 представлен довольно обширный список исправлений. Это обновление примечательно тем, что для скачивания не публичного обновления, необходимо заполнить веб-заявку или по старинке связаться со службой поддержки. Ответ на заявку обещают прислать в течение 8 часов. Вот ссылки на оригиналы статей:

Основы Express: переход с Access 2007 на SQL Server Express
Майкл Оти
Microsoft Access, несомненно, самая распространенная в мире база данных, и миграция баз данных из Access в SQL Server 2005 Express -- типовая задача, особенно если требуется реализовать преимущества многопользовательских функций SQL Server Express. Существует несколько средста переноса баз данных Access в SQL Server Express. Один из них -- мастер Import Export Wizard в составе SQL Server. Однако мастер Import Export Wizard в основном ориентирован на таблицы и не обеспечивает переноса любых объектов. К счастью, в Access 2007 есть собственный мастер Upsizing Wizard в составе Access 2007, с помощью которого можно перенести данные в SQL Server Express (или другие SQL Server).

О слиянии Windows Home Server и SQL Server
Брайан Моран
В этой статье я хочу вспомнить вступительную речь Билла Гейтса на недавней конференции Windows Hardware and Engineering Conference (WinHec) 2007. На первый взгляд, сделанные им заявления - не новость для сообщества Microsoft SQL Server, но они представляют интерес по нескольким причинам, особенно с учетом долгосрочной перспективы.

Основа Express - установка всех примеров: AdventureWorks, Northwind и Pubs
Майкл Оти
Иногда самые простые вещи становятся источником самых больших проблем. Убедительный пример -- установка тестовых баз данных для SQL Server 2005 Express. В большинстве статей и других учебных пособий предполагается, что уже установлена, по крайней мере, одна такая база данных. Опытным разработчикам SQL Server известны все особенности установки примеров, но тем, кто работает с SQL Server недавно, и особенно новичкам в области проектирования баз данных вообще, отыскать примеры совсем непросто.

Основы Express: системные базы данных SQL Server Express
Майкл Оти
Открыв в первый раз SQL Server Management Studio Express (SSMSE), пользователи с удивлением обнаруживают, что приложение не пусто. В нем уже находится несколько баз данных со странными именами. Это системные базы данных, используемые для отслеживания собственных операций SQL Server 2005 Express. Ниже приводится краткое описание системных баз данных SQL Server Express.

SQL Server Express к вашим услугам
Майкл Оти
При мысли о SQL Server 2005 Express Edition, первое, что приходит в голову: это -персональная база данных. Хотя для этого SQL Server Express, безусловно, годится, но в действительности представляет собой нечто большее, чем система с одной базой данных. Полученная из полнофункционального варианта SQL Server 2005, предназначенного для корпоративного использования, версия SQL Server Express по сути является сервером базы данных, и в качестве такового выполняет функции, выходящие за рамки персональной базы данных. Что значит быть сервером базы данных? Прежде всего, это означает, что SQL Server Express функционирует в фоновом режиме, обслуживая несколько приложений. В этом SQL Server Express отличается от прикладных базы данных, таких как Microsoft Access или даже новый SQL Server Compact Edition, чья работа встраивается в основной процесс, поэтому они предназначены главным образом для обслуживания единичных приложений или однопользовательского доступа. Работающий SQL Server Express может обеспечить обслуживание базы данных локальных и удаленных систем, насколько позволяют возможности их сетевой организации. При выключении SQL Server Express весь процесс обслуживания базы данных становится недоступен до его перезапуска.

Импорт и экспорт данных
Майкл Оти
Хотя некоторые простые базы данных могут начинать жизнь "с чистого листа", в большинстве случаев необходима предварительная загрузка таблиц с использованием внешних данных из неструктурированных файлов или других баз данных. Кроме того, когда база данных использовалась в течение некоторого времени, может понадобиться перенос данных в Microsoft Excel или какую-нибудь другую программу. SQL Server 2005 Express предусматривает несколько методов импорта и экспорта данных. Основные инструменты в составе SQL Server Express - утилита bcp, предложение T-SQL BULK INSERT и предложение T-SQL OPENROWSET. bcp - инструмент командной строки, способный осуществлять импорт и экспорт файлов. Стиль работы с этой утилитой в чем-то архаичен и может показаться громоздким. Однако при планировании переноса можно легко встроить этот инструмент в сценарии командной оболочки Windows, что позволяет повторно выполнять перенос данных.

Как вставить одиночную кавычку (') в базу данных SQL Server?
Джон Сэвилл
В. Как вставить одиночную кавычку (') в базу данных SQL Server? О. Обычно символ одиночной кавычки зарезервирован для вставки информации в базу данных. Если одиночная кавычка содержится внутри вставляемых данных, то команда часто оказывается испорченной. Чтобы обойти эту проблему, достаточно заменить любую одиночную кавычку двумя кавычками (не символом двойной кавычки, а двумя символами одиночной кавычки). Приведенный ниже образец команды выполняет замену автоматически:

Какова новая схема лицензирования Microsoft SQL Server 2005 Service Pack 2 (SP2)?
Джон Сэвилл
В. Какова новая схема лицензирования Microsoft SQL Server 2005 Service Pack 2 (SP2)? О. В SQL Server 2005 SP2 можно запускать неограниченное число виртуальных экземпляров SQL Server на физическом компьютере, лицензированном для SQL Server 2005 Enterprise Edition. Это позволит организациям экспериментировать с новыми сочетаниями экземпляров SQL Server, чтобы протестировать производительность серверов.

Развертывание баз данных SQL Server Express
Майкл Оти
Одно из существенных преимуществ SQL Server 2005 Express перед Microsoft Desktop Engine (MSDE) лежит в области развертывания. При развертывании баз данных MSDE требуется устанавливать базу данных отдельно от приложения. Правда, существует также возможность установки MSDE с использованием технологии Merge Modules, но этот вариант чаще применяется в случае с приложениями от независимых разработчиков (ISV), а не для корпоративных MSDE-приложений. SQL Server Express предусматривает три основных варианта развертывания, а именно: развертывание в "старом стиле", т.е. раздельная установка базы данных и приложений; более новый метод развертывания "XCopy"; встроенное развертывание (embedded deployment), когда установка SQL Server Express осуществляется вместе с установкой приложения. Данный материал посвящен методу развертывания "XCopy" для SQL Server Express.

Встроенное развертывание
Майкл Оти
Напомним, что базы данных SQL Server Express поддерживают три типа развертывания: развертывание вручную с отдельной установкой базы данных и приложения; метод XCopy, когда установка базы данных выполняется путем копирования файла базы данных .mdf программой установки приложения и последующего использования ключа AttachDBFile в связывающей строке для прикрепления этого файла; встроенное развертывание (embedded deployment), когда установка SQL Server Express выполняется как часть процесса установки приложения SQL Server 2005. Обсудим третий метод развертывания SQL Server Express - встроенное развертывание.

Откройте окно возможностей
Душан Петкович
SQL Server 2005 вводит понятие пользовательского окна, в котором набор результатов может быть разбит на части в зависимости от выбранных строк. Эти разбиения можно использовать для выполнения определенных вычислений по отношению к текущей строке. Поскольку текущая строка может представлять собой как строку суммирования, так и содержать упорядоченные значения, существует две группы функций, применяемых при отображении: функции для агрегирования и функции для ранжирования. Одна из возможных областей применения этих новых функций отображения - проекты бизнес-анализа. Чтобы продемонстрировать, как ими пользоваться, я создал таблицу 1 под названием Employee с помощью T-SQL кода, приведенного ниже:

Исправления для пакета обновления
Брайан Моран
Уверен, что нет более захватывающей темы, чем пакет обновления для пакета обновления, поэтому хочу рассказать о важном продукте, выпущенном компанией Microsoft для SQL Server 2005 SP2. Проверьте состояние своего экземпляра SQL Server 2005 SP2, поскольку недавно представители Microsoft объявили, что в пакете обновления SP2 есть "проблема". А как известно, У всякой проблемы есть другое название - просто ошибка.

Типы данных DATE и TIME в SQL Server 2008
Ян Либерман
В SQL Server 2008 будут добавлены типы данных DATE и TIME.

Как получить максимум от CLR
Винод Кумар
В SQL Server 2005 привнесено много нового, но для прикладного разработчика интеграция с .NET - самая ценная возможность. SQL Server 2005 может задействовать определяемые пользователем функции (UDF), агрегирования (далее UDA) и типы (далее UDT), хранимые процедуры и триггеры, написанные на языках CLR, таких как Visual Basic .NET и C#. О выдающихся достижениях в области программирования баз данных можно написать книгу, а многие из функций, реализуемых в CLR, недоступны сегодня в T-SQL. В этой статье я расскажу о том, как CLR работает в SQL Server 2005 и как лучше подойти к написанию и использованию кода CLR в SQL Server 2005. Мы рассмотрим три примера, в которых показано, как с помощью CLR заменить расширенные хранимые процедуры, представлена работа с триггерами CLR и использование CLR UDA. Эти простые примеры помогут разобраться в том, как пользоваться преимуществами новых разработок в SQL Server 2005.

Утечка данных
cnews
42% ИТ-специалистов считают, что для защиты конфиденциальных данных, циркулирующих внутри организации, их компании не делают всего, что могут, а если и делают что-либо, то используют для этого неадекватные методы. Совместное исследование компании Oracle и Ponemon Institute показывает, что ИТ-специалистов серьезно беспокоит то, как защищаются конфиденциальные данные, циркулирующие внутри ИТ-инфраструктуры их компаний. Большинство считает, что объем конфиденциальных данных, "разбросанных" по ИТ-инфраструктуре компании, является недопустимым.

Способы генерации случайных значений на TSQL
Ян Либерман
(1) Функция Rand(): Это самый простой и очевидный способ. Однако у него есть существенный недостаток - качество генерируемых данных. Значения, которые возвращает эта функция, не являются случайными (каждое следующее значение зависит от предыдущих). Из-за высокой предсказуемости значений использование этого способа сильно ограничено. В подтверждение можно привести фрагмент из BOL (электронной документации по SQL серверу):

[В начало]

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

Online Index Operations
Alexis Boukauvalas, Gang He, Lyudmila Fokina, Mirek Sztajno, Sameer Verkhedkar, Sanjay Mishra, Wey Guy, Gail Erickson
Introduced in SQL Server 2005 Enterprise Edition, the online index feature provides a powerful way to perform maintenance operations such as rebuilding or creating indexes in a production system without sacrificing DML concurrency. This paper provides a detailed discussion of the index process and provides guidelines and best practices for implementing this feature in a production environment.

Entity Framework: Complex Types Redux in Beta 2
Roger Jennings
The June 2006 ADO.NET Tech Preview: Entity Data Model specification asserts: "An EntityType can have one or more properties of the specified SimpleType, ComplexType, or RowType. Properties can be either single-valued or multi-valued." I've assumed (until now) that the Entity Framework (EF), which implements the Entity Data Model (EDM), supported complex types.

Oracle Provider for OLE DB
Oracle
OLE DB is a Microsoft data access standard accessed through ActiveX Data Objects (ADO), Visual C++, and any client that can use OLE DB. The goal of the Oracle Provider for OLE DB is to have a high performance and rich feature mechanism for data access to Oracle databases. The Oracle Provider for OLE DB allows high performance and reliable access to Oracle databases for ADO- or OLE DB-enabled applications. Current ADO and OLE DB programmers should be able to easily migrate to the Oracle provider because it complies with the latest OLE DB and ADO specifications. Additionally, the provider allows access to Oracle-specific features, including PL/SQL stored procedures, LOBs, and RAC. The Oracle OLE DB Provider supports transaction enlistment through the Oracle Services for MTS. The Oracle Provider for OLE DB also offers full support for .NET via the Microsoft OLE DB .NET data provider. With OLE DB .NET, applications can access the Oracle database from any .NET programming language. The provider now supports 64-bit Windows natively, including Windows x64 and Windows Itanium. Download the 64-bit Oracle Provider for OLE DB from OTN.

Declarative Management: Behind Enforce
Dan Jones
The new policy-based admin feature (Declarative Management) in SQL Server 2008 (code-named Katmai) can keep many aspects of the system from falling out of compliance. Some questions that come up are: "how does this work?" and "how come everything can't be enforced?" Let me tackle the first one, well, first. This is sort of a 300-level discussion.

TABLESAMPLE clause in SQL Server 2005
Decipherinfosys
SQL Server 2005 introduced a new clause - TABLESAMPLE. This clause restricts the number of rows returned from the "FROM" clause in a query to a sample number or a percentage of rows. Let's look at an example first to understand this clause:

Working with unambiguous dates
Jamie Thomson
I read with interest Matt Masson's latest blog entry "Optional date parameter". Its a useful technique and thus well worth adding to your SSIS armoury.

Using the Merge Statement in SQL Server 2008
John Welch
It's been a busy couple of weeks, but I've finally found some time to play around with the June CTP of SQL Server 2008. One of the items that caught my interest was the MERGE statement. This is a new addition to the T-SQL language that lets you perform INSERTs, UPDATEs, and DELETEs against a table in a single statement. You specify a source table to compare to, and what conditions should result in an UPDATE vs. an INSERT.

Optional date parameter
Matt Masson
This was part of the solution to the project my team was working on (that I'm still in the process of writing up), but I thought I'd post it separately because it has various uses.

When I Was Born for the 7th Time (Thoughts from TechEd)
Brian Welcker
Last week I attended TechEd in Orlando, Florida. Here are my thoughts on the event. This year was TechEd's 15th anniversary. I realized on the way down that I was attending my 10th consecutive TechEd. When I started attending, TechEd was about 2,000 or so people. This year, TechEd had over 13,000 people attending 480 Breakout Sessions, 200 Chalk talks, and 190 Hands-on Labs. In general, this TechEd was much more low key for Reporting Services than last year. I think this is because many of people decided to attend the MS BI Conference in May instead of TechEd. The second reason is that we didn't have a new release finished like we did last year. While customers are definitely interested in SQL 2008, they are still in the midst of deploying SQL 2005.

Black Belt Administration: Reporting Services Configuration Manager
William Pearson
A common attribute of enterprise reporting systems is their provision for single points of maintenance for significant aspects of system configuration. Reporting Services meets the general need for centralized maintenance of reports and their constituent components by housing them within a central "report catalog," facilitating easier report access and management. Reporting Services provides multiple management options to administrators. While many management tasks are most conveniently handled via the Report Manager Web interface, Reporting Services provides several specialized utilities to complement this primary application. One of these tools, the Reporting Services Configuration Manager, provides a central point of Report Server configuration and ongoing management. In this article, we will examine how we can use the Reporting Services Configuration Manager to configure a report server deployment. The tool allows us to manage related services, and to specify directories, identities, and database connections, among other details. We will examine each of these capabilities in the practice session that follows.

SQL SERVER - 2005 NorthWind Database or AdventureWorks Database - Samples Databases - Part 2
Pinal Dave
I have mentioned the history of NorthWind, Pubs and AdventureWorks in my previous post SQL SERVER - 2005 NorthWind Database or AdventureWorks Database - Samples Databases. I have been receiving very frequent request for NorthWind Database for SQL Server 2005 and installation method.

SQL SERVER - De-fragmentation of Database at Operating System to Improve Performance
Pinal Dave
This issues was brought to me by our Sr. Network Engineer. While running operating system level de-fragmentation using either windows de-fragmentation or third party tool it always skip all the MDF file and never de-fragment them. He was wondering why this happens all the time.

SQL Server 2005 unable to shrink the transaction log, help? (peculiar issue)
Satya SK Jayanty
On one of the archive database (using SQL 2005) we have a monthly task to shrink the transaction log during every 1st week of the month, this is required due to clear up the space on one of the drives where the additional transaction log file located (its a long story that we cannot replace the hardware, as they are legacy components associated on this server for this database application).

Database Administrator roles & responsibilities - difference in opinion
Satya SK Jayanty
I have been asked about Database Administrator roles and responsibilities many times and also seen in forums/newsgroups. In a nutshell DBA is responsible for all sorts of database within the organisation. This might vary for the management of Enterprise network systems where you will find batch of junior DBAs, 3rd level support and other support area based teams. Also the Senior most DBA will have the additional responsibility to manage the team of DBAs too. Such type of dividend is required for the database activities taking place in the database environment and will be able to better manage database request being made with the proper assignment of tasks to individuals based on work load and priority of tasks being performed for the purpose of producing a database environment that has a high level of data integrity, available databases, security, and high-performing databases.

The GO Command and the Semicolon Terminator
Ken Powers
There are probably not many SQL Server DBAs that use the semicolon as a statement separator. In SQL Server 2005, this is required in certain places and new author Kenneth Powers brings us a look at where and why you need to use this syntax.

SqlCredit - Part 4: Schema and Procedure Security
Rob Garrison
This is part 4 of a series. If you have not read part 3, you can find it here. In this month's installment, we will add security to the existing code and add new unit tests to prove that security.

Overview of SSIS
Amit Lohia
SQL Server Integration Services, the ETL subsystem for SQL Server 2005, is a new paradigm of development for the SQL Server DBA. It is one of the most popular, and also complex, environments that many people work with in SQL Server 2005. Amit Lohia brings us an introduction to this environment along with the basics of building and deploying a package.

Multiple Active Result Sets (MARS) - Transactions and Debugging
Mladen Prajdi?
Multiple Active Result Sets (MARS) is a new SQL Server 2005 feature that allows the user to run more than one SQL batch on an open connection at the same time. In my previous article about MARS I explained what MARS is and how to use it. In this article I'll discuss how transactions in MARS work and how you can debug MARS connections.

Summer SQL Teaser #3 Three For The Price Of One
Denis Gobo
Since I am so munificent today I decided to have 3 teasers in this one post.

SQL Server 2005: Easily importing XML Files
Mladen Prajdic
In SQL Server 2005 importing XML files became very easy. OPENROWSET now supports the BULK keyword which lets us import XML files with ease.

newbie question on update
Joe Celko
SQL Apprentice Question: I have a clients table which consists of, among other things, a column named source. I have a second table, sources, with two columns - client_id and source. The are fewer rows in sources than in clients. I am trying to update clients.source with sources.source without affecting the clients that do not have a corresponding row in sources. My first try was update clients set clients.source = sources.source where clients.client_id = sources.client_id But I ended up with nulls in the clients.source column for rows in which there was no row in sources.

Updating based on values of two records
Joe Celko
SQL Apprentice Question: I'm sure this is obvious, but for some reason, I can't get my hands around the solution. I have a table like this

group by datetime
Joe Celko
SQL Apprentice Question: I am baffled by this query and can use a little help pls! query count for each Monday of the week in the last few months between 9 pm and 1 am. I know I can use datepart() but can't figure out how to query between 9pm and 1am

Korean Fashion and Discount Retailer Deploys 4 Terabyte Database on SQL Server 2005
E.Land Group
Based in Seoul, Korea, E.Land Group's Retail Division has become a major force in fashion and discount retailing, partly through its expertise in brand management and merchandising. E.Land Group has four product lines that it sells through 93 of its own discount stores. The success of E.Land Group has enabled it to expand through a number of mergers and acquisitions in recent years. In order to help standardize its operations on SAP ERP, the company decided to move the SAP ERP data from newly acquired properties, which had been running on a UNIX\Oracle platform onto a multi-terabyte SAP ERP database hosted on Microsoft® SQL Server™ 2005 Enterprise Edition (64-bit) running on Microsoft Windows Server® 2003 Datacenter Edition for Itanium-based Systems

SSAS 2008 June Katmai - more testing results
Vidas Matelis
I posted this in SSAS 2008 forum, but decided also to post it here. I did some testing with Analysis Services 2008 June CTP and found following

Connecting to SQL Server 2005 on Vista and Longhorn
Stoyko Kostov
Some customers have experienced problems connecting to SQL Server 2005 on Vista and Longhorn. Even though they are trying to connect using an account that is an administrator on the box, they get a "Login failed for user" error message with a state of 11

SYSK 349: What's New in SQL 2008 (code named Katmai)?
Irena Kennedy
Here are some of the new and improved features (extracted from David Campbell's presentation) that will be available in SQL 2008

Understanding the latest SQL Server TPC-H scores
Kevin
I recently read Brian Moran's recent article on the latest Microsoft TPC scores (http://www.sqlmag.com/articles/index.cfm?articleid=96147&puuid=420B5669-1279-9119-120E2F28B99E67C6) with great interest. I'm a benchmarking junky from way back in my enterprise DBA days and always look forward to the latest news on major benchmarking results from the big database platforms

Microsoft's First-ever BI Conference Was a Success
Douglas McDowell
You missed a great event if you weren't in Seattle May 9-11 for Microsoft's first-ever business intelligence (BI) conference. Of course you know I'm biased, but I was just tickled pink to finally get a conference dedicated completely to Microsoft BI instead of just a small corner of a mega-conference's master agenda (like there will be at TechEd 2007 in Orlando June 4-8). It was quite a change to not spend my time convincing folks to attend BI sessions--all of the sessions were BI! Microsoft really put its shoulder into this one, bringing out Microsoft heavy-hitters Jeff Raikes, Ted Kummert, and Steve Ballmer and industry experts Michael Treacy and Dr. Robert Kaplan as keynote speakers each morning. In the kickoff keynote, Jeff Raikes covered details of Katmai, the next version of SQL Server, stating that it will be released in 2008, but he didn't announce any official name for "SQL Server 2008." He also talked about the development and early adoption of Office PerformancePoint Server 2007, as well as highlighting some of the recent accomplishments of key global system integrators and Microsoft's impressive investments in the BI space. Perhaps a little dramatically, he declared, "It's a new day for business intelligence." You can find more details about Jeff's speech in the press release at http://www.microsoft.com/presspass/press/2007/may07/05-09BINewDayPR.mspx. Microsoft also provided a press release regarding "Katmai" details; check it out at http://www.microsoft.com/presspass/press/2007/may07/05-09KatmaiPR.mspx. . . .

Create data driven PDF on the fly by using SQL server reporting service (SSRS)
Simon Pang
A free, mean and lean way to create data driven PDF on the fly by using SQL server reporting service (SSRS)

SQL Server consolidation & keeping up performance at the same time
Satya SK Jayanty
So what are your options in Server consolidation and not to harm the performance for the applications that are happily sitting across your data center and you have this mammoth task to consolidate the servers to save physical space etc.

SQL Server Cursors usage and performance - cursed
Satya SK Jayanty
If you have a requirement to poll through 'n' number of rows then immediately you would think about Cursors in SQL Server. As the solution using any programming language that loops recordsets to build the attendance list that works ok, but really say if you have hundreds of thousands rows to fetch then Cursors are not good option.

HTTP/Internet Proxy Detection - Using WINCE API
Laxmi Narsimha Rao ORUGANTI
SqlCeReplication and SqlCeRemoteDataAccess have InternetProxyServer, InternetProxyLogin, InternetProxyPassword properties which the application can set to make these sync protocols communicate via/thru the desired proxy. However, then the question comes on how to programmatically detect the HTTP/Internet proxy settings from the app to set the properties on SQL CE classes. Here is the short story of how to detect the settings on Windows CE/Mobile devices.

SQL Data Modeling: Entities versus Attributes
Jeff Smith
There's a handy little rule of thumb I use when developing my database models. It comes up often in situations like this: If we are storing phone numbers in the database, should AreaCode be a "free-form" char(3) column? Or should it be a foreign key reference to an AreaCodes table?

Parse delimited string in a Stored procedure
Dinakar Nethi
Sometimes we need to pass an array to the Stored Procrdure and split the array inside the stored proc. For example, lets say there is a datagrid displaying sales orders, each sales order associated with an orderid (PK in the Sales table). If the user needs to delete a bunch of sales orders ( say 10-15 etc)..it would be easier to concatenate all the orderid's into one string like 10-24-23-34-56-57-....etc and pass it to the sql server stored proc and inside the stored proc, split the string into individual ids and delete each sales order.

Exporting blank report to Excel does not render the headers - MS Reporting Services
Dinakar Nethi
I digged the RS books online and I found that there is a noRows property in the report which can be used to display some message when there is no data...

Setting up Transactional Replication from a back up
Dinakar Nethi
Here's a step-by-step (almost) instructions to set up Transactional Replication in SQL Server 2000 from a restored copy.

Database threats include unruly insiders
Kevin Beaver
Ask just about anyone in IT management what they believe is a greater threat to database security -- employees and contractors or external hackers -- and you're almost guaranteed to hear, "The bad guy outsiders, of course!" Sure, a lot of people still quote the "80% of all attacks come from the inside" statistic, but the majority of people I talk to still fear the dreaded outsiders.

SQL Server 2005 Full-Text Queries on Large Catalogs: Lessons Learned
Ron Talmage
The observations in this paper are based on tests run in the SQL Server Customer Lab for a customer who needed to scale up full-text search to a much greater potential volume. The paper describes the customer scenario, provides an overview of SQL Server 2005 full-text concepts that bear on the results, and offers lessons learned and recommendations for using full-text queries on large catalogs.

Scale-Out Querying with Analysis Services
Denny Lee, Nicholas Dritsas
This white paper describes how to set up a load-balanced scalable querying environment for Microsoft SQL Server 2005 Analysis Services so that you can handle a large number of concurrent queries to your Analysis Services servers. Load-balanced querying ensures that readers of OLAP cubes can consistently query for the latest aggregations throughout the day and distribute the load of all queries among the available servers. This scale-out querying architecture optimizes cube processing time, increases the frequency of cube update, and makes processing more robust as you can afford more frequent processing and transparent error recovery.

Partial Database Availability
Danny Tambs
This paper covers SQL Server 2005 features that enable appropriately designed solutions to achieve partial availability and remain online after a disk subsystem hardware failure. Simple design patterns in SQL Server 2005 can mitigate the risk of the entire database being unavailable due to the failure of one of multiple disk cabinets or arrays. The paper expands on the concept of partial database availability and covers related features and usage. Example scenarios enable developers and architects to take advantage of the features in SQL Server 2005 that support partial database availability when they design solutions for large databases.

Comparing Tables Organized with Clustered Indexes versus Heaps
Burzin Patel, Sanjay Mishra
In SQL Server 2005, any table can have either clustered indexes or be organized as a heap (without a clustered index.) This white paper summarizes the advantages and disadvantages, the difference in performance characteristics, and other behaviors of tables that are ordered as lists (clustered indexes) or heaps. The performance for six distinct scenarios where DML operations are performed on these tables are measured and detailed observations presented. This white paper provides best practice recommendations on the merits of the two types of table organization, along with examples of when you might want to use one or the other.

Inside ALTER TABLE
Kalen Delaney
Readers often ask where I get the ideas for my columns. One plentiful wellspring of inspiration is the public newsgroups, where I frequently answer anywhere from 5 to 20 questions a day. If I find myself composing a long, detailed reply to a question, I wonder whether the topic is worth a column. In other cases, if I see similar questions repeatedly within a few days, I take that as a sign that many people want to know about the topic. Recently, I responded to questions on three different forums about what goes on inside SQL Server when it performs an ALTER TABLE operation. I realized I also had questions about which variations of ALTER TABLE require SQL Server to do more work than others do, so I rolled up my sleeves and started testing.

Using ::fn_dblog() to identify which indexes are experiencing page splits
Greg Linwood
I picked up an interesting tip from Gert Drapers (MS) in the private MVP forum this week which was helpful to me so I'll post it here in case it's useful to anyone else

[SQL Server Analysis Services] - "Errors in the metadata manager" when restoring a backup
Jon Galloway
I had trouble restoring a SQL Server 2005 Analysis Services backup today due to "Errors in the metadata manager" messages: The ddl2:MemberKeysUnique element at line 243, column 28420 (namespace http://schemas.microsoft.com/analysisservices/2003/engine/2) cannot appear under Load/ObjectDefinition/Dimension/Hierarchies/Hierarchy. Errors in the metadata manager. An error occurred when instantiating a metadata object from the file, '\\?\C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\Data\...

Excel 2007 and SQL Server Analysis Services 2005 Service Pack 2
David Gainer
have recently been talking to some customers (both at a conference and on a series of visits last week), and a number of them asked about Excel 2007 and Microsoft SQL Server Analysis Services - specifically, what changes in Excel when Services 2005 Service Pack 2 (or newer) is installed on the server. There are a number of differences manifested in Excel 2007, so I thought I would list them here for folks.First, some additional functionality is enabled in Excel. Specifically, the following filter types are enabled in PivotTables connected to Analysis Services:

Excel 2007 Document: Designing SQL Server 2005 Analysis Services Cubes for Excel 2007 PivotTables
Allan Folting
Microsoft® Office Excel® 2007 takes advantage of most of the features in Microsoft SQL Server™ 2005 Analysis Services. To take full advantage of these features, it is important to consider the end-user experience in Office Excel 2007 when you are designing cubes. This document outlines how to make the end-user experience great by optimizing the cube design for Office Excel 2007 PivotTable® dynamic views. Note that the features described in this document are applicable not only to SQL Server 2005 Analysis Services cubes; Excel exposes the features described with any OLAP (online analytical processing) server that supports the required functionality.

Creating local cubes with AMO
Chris Webb
Interesting nugget from the MSDN Forum, in a post by Adrian Dumitrascu: you can create local cubes in AMO. Here's the text of the post:

Collecting Counter Information
Jesse Orosz
I had to open a ticket with MS earlier this week regarding frequent crashing of the OLAP service. One of the pieces of data they needed was counter information. It wasn't just a few counters, it ended up being 1700. Granted, it was way more than they really needed, but better to give them more than less.

SQL Server 2005 high CPU occurrence - why it is?
Satya SK Jayanty
If a particular query is performing poorly the first thing you would check is relevant indexes, even though having associated indexes against those tables may not help any better to the performance. The next phase you observe is high CPU count from the Task Manager (TM), up to some extent using TM is useful but never come into conclusion that a particular process is the root cause of such high CPU count.

Handling and troubleshooting memory issues in a SQL Server 2005 instance
Satya SK Jayanty
We had a major issue on one of the SQL Server instance with the memory and getting following error message intermittenlty:

Performance and Scalability: SQL Server 2005 Enterprise Edition Benchmarks
Microsoft
SQL Server 2005 Sets Record for Data Warehousing Performance on Microsoft Windows. SQL Server 2005 achieved the #1 price/performance result for 3TB TPC-H non-clustered benchmark. This is a record breaking TPC-H three terabyte benchmark for a database running on Microsoft Windows and an HP Integrity rx8640 Server. The recent TPC-H benchmark study with HP demonstrates Microsoft SQL Server's ability to deliver enterprise scalability and performance enabling our customers to run large scale, mission critical applications with the best price/performance. This result is twice the size of previous SQL Server benchmarks achieved for the launch of SQL Server 2005 demonstrating that SQL Server continues to push the performance envelope. Furthermore, SQL Server 2005 outperformed the previous best result on Windows with performance of 60,359 QphH@3TB (queries per hour) compared to the previous record of 37,813 with a much better price/performance of $32.60 compared to $38.00.* * TPC results as of 5/21/07. HP Integrity rx8640 (with SQL Server), 60359 QphH@3TB, 32.60 $/QphH@3TB, available 5/21/07. HP Integrity rx8640 (with Oracle), 37813 QphH@3TB, 38.00 $/QphH@3TB, available 5/14/07. Source: Transaction Processing Performance Council (www.tpc.org).

SAP Sales and Distribution Standard Application Benchmarks
Microsoft
On October 30, 2005, Microsoft released the highest performance SAP three-tier Sales and Distribution (SD) application benchmark ever on any Microsoft Windows platform: 93,000 concurrent users. The benchmark was run on SQL Server 2005, Windows Server 2003, HP Integrity Superdome, Intel Itanium 2-the first one to run the latest benchmark set from SAP version ECC 5.0. These results demonstrate the scalability and performance that customers will see when deploying SAP business applications on SQL Server 2005. The benchmark also shows the scalability that can be achieved with 64-bit SQL Server 2005. SQL Server also holds the best results for SAP R/3 Sales and Distribution three-tier standard application benchmarks in 4-, 8-, 16-processor servers.

Start up parameters in SQL Server
Decipherinfosys
Very rarely does one need to add to the start up parameter list in SQL Server but when you do need to (when working with MSFT PSS or trying to add trace flags), you should know what those parameters do and where to add them. In this blog post, we will go over the start up parameters that exist in SQL Server by default for a given installation and the additional ones that can be added to the list. First, let's take a look at where and how you can define these start up parameters. In SQL Server 2000, you can access them through the Enterprise Manager by right clicking the server name (instance) and selecting properties. When the screen that is shown below appears, you have the tab at the bottom that states "Start up Parameters".

When It Comes to Data, SQL Server CE is A Life Saver!
Rafik Robeal
In not so distant past there used to be a product called SQL Mobile. As the name implies, or intended to covey at least, that the database product was for mobile devices only. Apparently, mobile applications have a need to store data in a relational store that is designed specially for them with the requirements that the engine must be very lightweight, runs in process, the database should be stored in a single file, can be encrypted, password protected … to mention a few.

Instant Revelations from the Recent TPC-H Benchmarks
Kevin
One of the first things you notice about the recently released TPC-H benchmark from HP and Microsoft is that it's big, REALLY big. It weighs in at over 500 pages and, since it's the full disclosure document, contains every minute detail about the benchmarked system and environment you can imagine. For example, every hard disk in the system is fully describe - all 994 of them. Along with the hard disks, every hard disk controller (49), fiber channel controller (2), storage enclosures (99), and OS setting were fully described.

Startup Switches used in the Recent TPC-H Benchmark
Kevin
Some people take a rather cynical approach to benchmarking by considering them to be inaccurate representations of what the database platform and hardware can do. They're cynical because the benchmarkers take every opportunity to give their system every advantage they can. They view it as a sort of cheating since most real-world applications never use the techniques employed to gain high scores on a TPC benchmark. I, on the other hand, don't look at it so pessimistically. After all, it's only cheating if a vendor uses these unique and obscure techniques if they were the only one doing it. But quite to the contrary, every database platform that has ever undertaken a TPC test has used these exact same techniques. Since everyone is doing it and everyone is fully documenting the shortcuts they take, it can't possibly be construed as cheating.

Microsoft Windows PowerShell and SQL Server 2005 SMO - Part II
Muthusamy Anantha Kumar
Part I of this article series discussed how to install PowerShell and how to use basic commands in PowerShell and SMO. Part II of this series discusses more about PowerShell and its features in conjunction with SMO. If you have even a slight knowledge of languages, such as PERL, Python or C, you can see a definite similarity in the syntax when using PowerShell. In addition, it resembles Operating systems, such as UNIX, Linux, MS-DOS, etc.

Ajax Database Best Practices
Joey Vincent
Performance optimization and network traffic reduction are extremely important when there are on-the-fly database operations or when using techniques like Ajax, where the user may be unaware that database processing is occurring. I have collaborated with Pinal Dave, well-known blogger and founder of SQLAuthority.com, to create what we believe are the Ajax Database Best Practices:

Shall I drop pubs and northwinds databases, how about Adventureworks?
Satya SK Jayanty
As you may be aware SQL Server installation (70 & 2000) will automatically install the sample databases pubs and northwind, if you aren't using them or not a training institute then simply drop them.

SQL Server 2005: How to fix outdated names of Windows logins
Laurentiu Cristofor
The SQL Server login catalogs store the names of Windows principals as well as their SIDs. Because the names are stored, changes that affect a name can lead to a state where a catalog entry is out of sync with the current login name. For example, in the case of local Windows accounts, if we change the machine name, the catalogs will reflect the old machine name. Also, if we change the name of an account, the catalog will still contain the old account name. One side-effect of this will be that queries that rely on logic like select * from syslogins where name = suser_name() will be broken. What needs to be done here is to update the login names using the ALTER LOGIN statement. Based on the LookupSid function that I introduced in my previous post, I wrote a small T-SQL script that loops over the server_principals catalog entries and verifies whether the names recorded are matching the names that Windows returns for the associated SIDs. If differences are detected, the script will output the ALTER LOGIN statements that will fix the situation. Note that no data is changed here; the script is simply producing as output the statements that should be run to rectify the problem. Here's the script:

SQL Server 2008 - whats new
Satya SK Jayanty
Whenever the new release of a product comes out the first thing to know about what's new with this release, as the code name Katmai and now 'SQL Server 2008' which will be available for RTM in the year 2008.

Deprecated features highlights in SQL "Katmai" 2008 release
Satya SK Jayanty
SQL 2008 books online confirms the deprecated features that are not supported with the release of RTM, those few lists are as follows:

Store any type of data - SQL 2008
Satya SK Jayanty
As you may have or may not seen from the initial documentation of SQL Server 2008 (formerly Katmai) product overview that few changes with regard to the data transition for the relational and non-relations quite good changes are introduced such as:

SQL Server 2008 - Change Data Capture: new feature
Satya SK Jayanty
Let us talk briefly about the new feature that is introduced within SQL Server 2008 aka Katmai. Change Data Capture (CDC) is (similar to triggers: INSERTED & DELETED tables) the 'new boy in SQL Server town' that records the DML activities applied to the database objects with an easy relational format. Further the column information that mirrors the column structure of a tracked source table is captured for the modified rows, along with the metadata needed to apply the changes to a target environment. Creating a capture instance also creates a change table that corresponds to the source table. You can specify up to two capture instances for a source table.

Monitoring and Analytics CTP3: Analytics Charts
Patrick Husting
Well, I think I found my favorite new feature. We now have a drag and drop designer for Analytic Charts in CTP3. Basically you create a blank chart and connect to a data source. In the Details Pane, you will see a list of measures, dimensions and namesets available within that data source. Then you just drag and drop them to build your chart. Pretty straight forward.

SQL Server 2005: Stored Procedure call activity statistics & execution time
Satya SK Jayanty
Is it possible to get statistics like how many times a stored procedure is called such as average execution time and how often that procedure is being called.

Configuration Settings in the Recent TPC-H Benchmark
Kevin
One of the first places most people tend to think about when considering boosting SQL Server performance are the settings of SP_CONFIGURE. Yet, when you examine the details of the recent TPC-H benchmark by HP and Microsoft, you'll see that there really weren't a very large number of changes to what are typically default settings within SP_CONFIGURE. The following parameters were changed from their default values:

Chapter 4: Exploring Relational Database Theory and Practice
Roger Jennings
This excerpt from "Special Edition Using Microsoft Office Access 2007" discusses Moving from Spreadsheets to Databases, Defining the Structure of Relational Databases, Maintaining Data Integrity and Accuracy and more.

SQL SERVER - Retrieve Current Date Time in SQL Server CURRENT_TIMESTAMP, GETDATE(), {fn NOW()}
Pinal Dave
There are three ways to retrieve the current datetime in SQL SERVER. CURRENT_TIMESTAMP, GETDATE(), {fn NOW()}

Using SQL Backup
William Brewer
This article describes a proprietary third-party SQL Server backup tool, namely Red Gate's SQL Backup. I am not an employee of Red Gate, but I have been using the tool for several years, like it, and recommend it to my clients. I state this in order to set the correct expectations for this article. It is not a comparative review of Backup products, nor is it a critical review of SQL Backup. I wrote it because a client asked for documented reasons why I was recommending that he purchase the tool, and I couldn't find a document that quite fitted the purpose. Hence, this is my attempt to define:

Good Distributed Partitioned Views / Federated Databases Article
Denis Gobo
The Microsoft SQL Server Development Customer Advisory Team has a nice blog post about Distributed Partitioned Views / Federated Databases

Wait Before You Consolidate
Michael Otey
One of the most prevalent trends in IT today is server consolidation. Companies consolidate mainly to end server sprawl, reduce total cost of ownership (TCO), increase hardware utilization, and streamline IT resources. But many organizations aren't seeing these benefits. Their different departments and branch offices continually acquire software solutions, which tend to come bundled with server hardware. As these single-purpose servers accumulate, they increase the organizations' operating costs both in terms of direct hardware purchases and maintenance. In addition to costs, these accumulated servers also increase infrastructure requirements with their power, cooling, and networking demands. Not surprisingly-considering the massive increases in the computing power of today's multicore servers-these single-purpose systems tend to have utilization rates under 20 percent. More systems mean greater management efforts and reduced efficiency and flexibility. One well-known management adage sums up this situation: "Every penny spent on hardware requires a dollar to manage." Whether your organization will benefit from consolidation depends on the type of server system you have. Before you jump on the server-consolidation bandwagon, make sure your system is a good candidate for this popular solution

Help for Query Hints
Kalen Delaney
In recent articles, I've discussed some of the ways to detect information about the plans SQL Server is using to access data that your queries have requested. Our next step is to explore some of the ways that you can affect what plan will actually be used. Although Microsoft typically recommends that you let the SQL Server query optimizer determine the plan to use for a query, sometimes you need to provide a little guidance for the optimizer in the form of hints. Supplying a query hint is a usually a straightforward change to your application code. However, in certain environments, you might either have no control over the code itself, or changing the code will break your licensing agreement or invalidate your support guarantees. In such situations, SQL Server 2005's plan guides feature can be helpful. Using a plan guide, you can instruct SQL Server to use a particular hint every time it encounters a specified query, and you don't need to change the query itself. Although plan guides are frequently used with the new optimization hints included in SQL Server 2005, you can use them with almost any hint. Let's start our exploration of plan guides with an overview of how they work, then look at why a plan guide might not work as intended

Data Warehousing: The Foundation of BI
Michelle A. Poolet
One of the foundational structures of a business intelligence (BI) solution is the data warehouse. To understand the most basic schema design for a data warehouse (i.e., the star schema), you must first understand the relationship between BI and data warehousing. BI is a business management term that refers to the applications and technologies used to gather, provide acc

SQL Server 2008 CTP1: BI Is Coming, We Promise
Douglas McDowell
It's summer. Schools are out; folks are heading out to vacation; it's time to sit back and take it easy. At least that's what I thought until I showed up at this year's TechEd in Orlando, Florida. There, I found out that the rumors are true: SQL Server 2008 Community Technology Preview (CTP) 1 has been released! Just last month in my commentary, "Microsoft's First-ever BI Conference Was a Success" (InstantDoc ID 96334), I rambled on about how SQL Server "Katmai" was to be released in 2008, and now Microsoft has gone on record branding it "SQL Server 2008" (SQL2008--looks weird doesn't it?) and even handing out CTP DVDs at TechEd. Being the resident business intelligence guy, my personal favorites in the June CTP are the Change Data Capture (CDC), star join query optimizations, MERGESQL statement, and enhanced dimension design in Analysis Services. CDC will let applications (e.g., extraction, transformation, and loading) access records of database changes, which should improve performance and reduce application complexity. Star join query optimizations will reduce query response time by recognizing data warehouse join patterns. MERGESQL is a new T-SQL statement, which can insert information and update information with a single statement. The enhanced dimension design UI in Analysis Services will help developers use best practices when creating and editing dimensions

[В начало]

ФОРУМ SQL.RU

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

хитрая дата
SQL-Server после Access
и снова deadlock :-(
Узнать максимум из 3х дат
Я не понимаю как сделать trigger :(
После востановления базы она не открывается
Не могу составить запрос!!!
Firebird
Замена букв в таблице на БОЛЬШИЕ
Защитить данные
Кто как хранит пароли?
Небольшая самодельная тулза для отображения блокировок...
Как удалить используемую базу ?
ПЕРЕНОС БАЗЫ ДАННЫХ ИЗ SQL в MySQL
Что передать в условие для извлечения всех записей?
Не могу подключиться к SQL 2000 по NAMED PIPE c win98
Как кореллированный подзапрос заменить на join?
выборка where в IN
Полное скриптвание базы средствами SQL
Как удаленно администрировать SQL Server (по http)?

[В начало]

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

проверка базы
SQL Server Active Directory Helper
Импорт из текстового файла с переменной шириной последнего столбца
Partitioned View & Check Constraint ещё
Не могу посмотреть Properties у БД's на SQL 2000 SP4
bcp 8.0 и 9.0
Список членов ADSI группы собранных из разных доменов
EMPTYFILE
Change application logic to enforce strict transaction nesting.
Импорт из Paradox 7
Подписчик не доступен ....
is_ddl_allowed vs msde
создание агрегирующих функций на DELPHI!!!
знатокам SMO
A floating point exception occurred in the user process 2Ksp4
Как задать имя(Alias) Param0 в OLE DB Command task?
Периодически тормозит исполнение DTS пакета

[В начало]

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