Отправляет email-рассылки с помощью сервиса Sendsay

MS SQL Server

  Все выпуски  

MS SQL Server - дело тонкое...


Информационный Канал Subscribe.Ru

#258<<  #259

СОДЕРЖАНИЕ

1.СТАТЬИ
1.1.Менеджер памяти SQLOS: диагностика вытеснения памяти
1.2.Сравнение SQL Server 2000 Index Tuning Wizard и SQL Server 2005 Database Tuning Adviser
2.ССЫЛКИ НА СТАТЬИ
2.1.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа

СТАТЬИ

Менеджер памяти SQLOS: диагностика вытеснения памяти

По материалам статьи Slava Oks: SQLOS's memory manager: responding to memory pressure
Перевод Александра Гладченко

При настройке SQL Server очень важно понимать, как он реагирует на вытеснение памяти. Автор уже посветил довольно много времени на описание разных типов вытеснения памяти. В этой статье Вы узнаете, почему это так важно. Вытеснение памяти можно классифицировать двумя основными группами: вытеснение VAS и вытеснение физической памяти. Вытеснение физической памяти может быть спровоцировано операционной системой, мы назвали его внешним, или оно может быть спровоцировано процессом, такое вытеснение мы называем внутренним.
SQLOS использует специализированную структуру, которая занимается обслуживанием любого из типов вытеснения памяти процесса. В основе этой структуры находится Resource Monitor (RM). RM контролирует состояние внешних и внутренних индикаторов памяти. Когда один из них изменяется, RM отслеживает состояние всех индикаторов. При этом соответствующее оповещение отображает состояние индикатора. Такое оповещение рассчитано на то, что оно будет разослано всем клеркам памяти (Memory Clerks).

------------------ | Resource Monitor | / -----------------\ / | \ ------------------------------ --------- --------------------------------- |Low Physical Internal/External| | Low VAS | | High Physical Internal/External | ------------------------------ --------- ---------------------------------

Resource Monitor и Memory Clerks

Вспомним, что в SQLOS имеются два типа узлов: узлы памяти и процессора. Узлы памяти обеспечивают место для распределения, а узлы процессора предоставляют места для планирования. В текущей реализации каждый узел процессора имеет собственный монитор ресурса (Resource Monitor). Это нужно для того, чтобы быть обеспечить реакцию на вытеснение памяти для узла. Автор расскажет более подробно об узлах процессора, когда перейдёт к рассмотрению подсистемы планирования SQLOS. Пока же нужно уяснить, что в зависимости от аппаратной конфигурации одновременно может исполняться несколько задач RM.
Потребление больших областей памяти нагружает клерков памяти, которые эту память распределяют. Другой важной задачей клерков памяти является реакция на оповещения RM. Каждый потребитель памяти является подписчиком клерка, получая оповещения о вытеснении памяти, что обеспечивает соответствующую реакцию.
Каждый узел процессора имеет свой список клерков памяти. Первый RM определяет, какие оповещения он должен рассылать. Для этого он проходит по списку и рассылает оповещения каждому клерку памяти по очереди. В течение рассылки, кэши принимают оповещения также, как и клерки памяти.

----------------- ------------------------| Resource Monitor|------------------------- / ----------------- \ / / \ \ / / \ \ -------------------- ------------------ ------------------------ ---------------- |Generic Memory Clerk| |Cache Memory Clerk| |Buffer Pool Memory Clerk| |CLR Memory Clerk| -------------------- ------------------ ------------------------ -----------------

С точки зрения планирования у RM есть несколько важных вещей, о которых стоит знать:

  • Resource Monitor в своей работе использует собственный планировщик, разработчики назвали его скрытым планировщиком.

  • Resource Monitor работает в неприоритетном режиме.

  • Узел для Dedicated Admin Connection не имеет собственного Resource Monitor.

Некоторые клерки памяти могут реагировать на вытеснение памяти. Мы уже упоминали кэши, но кроме них, ещё и каждый узел процессоров понуждает своего клерка ограничивать работу исполнителя (worker) и урезать системные пулы потока, который подвержен вытеснению. К примеру, полнотекстовый поиск, в таких случаях, даёт команду своему клерку памяти на сокращение разделяемых буферов памяти, которые он совместно использует с MSSearch. CLR использует своего клерка для вызова сборщика "мусора", а буферный пул (Buffer Pool) понуждает своего клерка реагировать только на внешнее вытеснение памяти в VAS. (Кстати, почему?)

Внешнее вытеснение памяти: RM и Buffer Pool

В перспективе SQLOS, Buffer Pool - это программа распределения одиночных страниц и используемый экстенсивно менеджер памяти. О внешнем вытеснении памяти сообщает операционная система Windows. На это реагирует RM, рассылая соответствующие оповещения клеркам. После получения оповещения, BP ещё раз вычисляет целевое значение доступной памяти, и разрешенный для использования BP объём физической памяти. Имейте в виду, что целевое значение не может быть меньше, чем установленное через sp_configure в параметре конфигурации значение min server memory, и не может превышать max server memory. Если новое целевое значение меньше текущего, доступного буфера, BP будет сжиматься до тех пор, пока не исчезает внешнее вытеснение физической памяти. В течение этого процесса BP пробует проводить высвобождение, а в случае с AWE, возвращать свободную физическую память обратно операционной системе. Вспомним, что в случае с SQL Server 2000, работающем в AWE режиме, BP не реагирует на вытеснение физической памяти.

Внутреннее вытеснение памяти: BP и Resource Monitor

Уменьшение объёма BP приводит к внутреннему вытеснению памяти. Это один из путей для BP, чтобы процесс претерпел внутреннее вытеснение физической памяти. Какие же компоненты BP оповещают о внутреннем вытеснении памяти? Да, Вы правильно решили, что именно SQLOS предоставляет BP механизм, который включает соответствующий внутреннему вытеснению памяти индикатор RM. Как Вы знаете, RM распознаёт сигнал индикатора и инициирует оповещение, которое рассылается клеркам. У BP есть свой клерк, которому RM вернёт это оповещение. Конечно же, тут не будет зацикливания!? На самом деле, всё обстоит так потому, что BP занимается только контролем внешнего вытеснения физической памяти и игнорирует любое внутреннее вытеснение физической.
Существует ещё две причины проявления внутреннего вытеснения физической памяти. Оно может быть вызвано динамическим изменением max server memory. Кроме того, это может произойти, когда захвачены 75 % страниц BP, с использованием интерфейса SQLOS распределения одиночных страниц. Инициируя внутреннее вытеснение физической памяти, BP востребует свои страницы из кэшей и других компонент, которые в это время их используют.

Вытеснение памяти VAS

До сих пор автор рассматривал то, как SQLOS, а следовательно и SQL Server, организует вытеснение внешней и внутренней физической памяти. Обслуживание вытеснения VAS даётся труднее, потому что Windows сложнее его распознать. О вытеснении VAS оповещение RM может осуществляться по двум путям. Первый путь проходит через узел памяти, когда виртуальные или разделяемые интерфейсы узла памяти не смогут распределять куски по 4 МБ и менее (RM не получит оповещение, если размер куска больше 4 МБ), после чего узел памяти включает в RM индикатор недостаточности VAS. Тут же существует более активный путь, когда при своей работе RM проверяет наличие в VAS блока в 4 МБ, и если такого куска не находиться, он сам индицирует недостаточность VAS, и начинает рассылать соответствующее оповещение.
Возможность распознания того, что имеет место вытеснение VAS - это то, чем отличаются SQL Server 2000 и SQL Server 2005. SQL Server 2000 очень тяжело преодолевает вытеснение VAS. В SQL Server 2005 о вытеснении VAS рассылается оповещение всем клеркам памяти, после чего они могут сократить используемые ресурсы. Например, узел процессора может уменьшить число своих потоков, CLR может высвободить не используемые уже домены приложений, сетевые библиотеки сократят количество своих буферов.
Когда мы говорили о менеджере памяти SQLOS, автор упоминал о реакции BP на вытеснение VAS, когда сервер работает в AWE режиме. Настало время внести необходимые разъяснения. Когда BP принимает оповещение о недостаточности VAS, он сообщает о ранее им зарезервированных, кратных 4 МБ кусках VAS. Если он обнаруживает неиспользуемые куски по 4 МБ, или неиспользуемые страницы базы данных, он легко может освободить их.

Контроль вытеснения памяти

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

SELECT * FROM sys.dm_os_ring_buffers WHERE ring_buffer_type='RING_BUFFER_RESOURCE_MONITOR'

(имеется несколько разных закольцованных буферов, которые можно указать в условии выборки , включая: планировщики, исключения и "out of memory", но это уже темы для другой статьи)

Вот пример возможного результата исполнения этого запроса:

<Record id = "0" type ="RING_BUFFER_RESOURCE_MONITOR" time ="788327260"> <ResourceMonitor> <Notification>RESOURCE_MEMPHYSICAL_HIGH</Notification> <Indicators>1</Indicators> <NodeId>0</NodeId> </ResourceMonitor> <MemoryNode id="0"> <AvailableMemoryOnNode>0</AvailableMemoryOnNode> <ReservedMemory>2111472</ReservedMemory> <CommittedMemory>20944</CommittedMemory> <SharedMemory>0</SharedMemory> <AWEMemory>0</AWEMemory> <SinglePagesMemory>1792</SinglePagesMemory> <MultiplePagesMemory>6680</MultiplePagesMemory> <CachedMemory>592</CachedMemory> </MemoryNode> <MemoryRecord> <TotalPhysicalMemory>1047556</TotalPhysicalMemory> <AvailablePhysicalMemory>542532</AvailablePhysicalMemory> <TotalPageFile>3254476</TotalPageFile> <AvailablePageFile>2242756</AvailablePageFile> <TotalVirtualAddressSpace>2097024</TotalVirtualAddressSpace> <AvailableVirtualAddressSpace>972352</AvailableVirtualAddressSpace> <AvailableExtendedVirtualAddressSpace>0</AvailableExtendedVirtualAddressSpace> </MemoryRecord> </Record>

Второй запрос показывает, когда BP, программа распределения одиночных страниц, инициирует/завершает внутреннее вытеснение памяти:

SELECT * FROM sys.dm_os_ring_buffers WHERE ring_buffer_type='RING_BUFFER_SINGLE_PAGE_ALLOCATOR'


<Record id = "9" type ="RING_BUFFER_SINGLE_PAGE_ALLOCATOR" time ="789165566"> <Pressure status="0"><AllocatedPages>477</AllocatedPages> <AllAllocatedPages>477</AllAllocatedPages> <TargetPages>31553</TargetPages> <AjustedTargetPages>31553</AjustedTargetPages> <CurrentTime>788967250</CurrentTime> <DeltaTime>110</DeltaTime> <CurrentAllocationRequests>79709</CurrentAllocationRequests> <DeltaAllocationRequests>156</DeltaAllocationRequests> <CurrentFreeRequests>79232</CurrentFreeRequests> <DeltaFreeRequests>23640</DeltaFreeRequests> </Pressure> </Record>

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

Заключение

Вытеснение памяти может оказывать сильное воздействие на производительность сервера и стабильность его работы. Особенно это критично, когда SQL Server совместно использует сервер с другими приложениями или конкурирует за VAS с расширенными хранимыми процедурами или CLR. Вытеснение памяти может задействовать дополнительные ресурсы I/O, рекомпиляции и другие паразитные действия. Поэтому, понимание и диагностика разных типов вытеснения памяти, которым подвержен SQL Server, является очень важной частью управления сервером и разработки приложений баз данных. Автор надеется, что эта статья поможет Вам делать эту работу более эффективно.

[В начало]

Сравнение SQL Server 2000 Index Tuning Wizard и SQL Server 2005 Database Tuning Adviser

По материалам статьи Luis Martin: Comparing the SQL Server 2000 Index Tuning Wizard and the SQL Server 2005 Database Tuning Adviser
Перевод Александра Гладченко

Среди повседневных задач DBA, есть одна, для которой все мы должны находить время, это исследования. Автор проводит свои исследования с помощью новых инструментов, которые упрощают эти задачи.
С этой целью, автор поближе познакомился с SQL Server 2005 Beta, и был удивлён возможностями таких инструментов, как новый Database Tuning Advisor (DTA), и решил проверить, лучше ли этот инструмент подбирает необходимые для баз данных SQL Server 2000 индексы?
Чтобы ответить на этот вопрос, автор использовал реальную базу данных своего клиента. Он полагал, что не будет адекватным использовать для этих целей тестовую базу, и вместо неё он выбрал ту, которую оптимизировал в этот момент.
Для начала, автор использовал SQL Server 2000 Profiler, чтобы зафиксировать запросы от реального клиентского приложения.

Анализ с использованием SQL Server 2000 Index Tuning Wizard (ITW)

Запрос, который анализировал автор, был таким:

SELECT DISTINCT t.date AS c0, c.prefijoext AS c1, c.numeroext AS c2, c.checkbook AS c3 FROM Transac t (nolock) JOIN cmpasociados c (nolock) ON t.nrotrans = c.nrotrans JOIN tiposcmp you (nolock) ON c.codcmp = you.codcmp JOIN checkbooks so (nolock) ON c.checkbook = so.checkbook AND t.codemp = so.codemp WHERE T.Nrotranselim is null AND ( CASE WHEN T.Codcmp IN ( ' CA', ' CC', ' CB', ' CE' ,' LR', ' LO', ' LP', ' CZ' ,' VA', ' VB', ' VC', ' YOU' ,' VZ' ) THEN T.Nrotransaut WHEN T.Codcmp IN (' IÉ', ' EÉ', ' RD') THEN T.Nrotransctrl ELSE T.Nrotrans END ) IS NOT NULL AND (t.CodEmp IS NULL OR t.codemp = 1) AND c.checkbook = 25 AND t.codsuc = 1 ORDER BY C2 DESC

Этот запрос, скопированный в Query Analyzer, имел следующий план исполнения:

Статистика выполнения запроса показала следующие значения:

170259 row(s) affected) Table ' TRANSAC'. Scan count 1, logical reads 31004, physical reads 1065, read-ahead reads 29512. Table ' CMPASOCIADOS'. Scan count 1, logical reads 8482, physical reads 0, read-ahead reads 4393. Table ' TIPOSCMP'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 2. Table ' TALONARIOS'. Scan count 1, logical reads 2, physical reads 2, read-ahead reads 0.

После анализа этих результатов, автор запустил ITW, который представил следующие рекомендации по индексам:

CREATE NONCLUSTERED INDEX [ IXC2000_TRANSAC27 ] ON [ dbo ].[ TRANSAC ] ( [ NROTRANS ] ASC ,[ DATE ] ASC ,[ CODCMP ] ASC ,[ NROTRANSELIM ] ASC ,[ CODSUC ] ASC ,[ NROTRANSAUT ] ASC ,[ CODEMP ] ASC ,[ NROTRANSCTRL ] ASC ) CREATE NONCLUSTERED INDEX [ IXC2000_CMPASOCIADOS28 ] ON [ dbo ].[ CMPASOCIADOS ] ( [ NROTRANS ] ASC ,[ CODCMP ] ASC ,[ CHECKBOOK ] ASC ,[ PREFIJOEXT ] ASC ,[ NUMEROEXT ] ASC )

Ожидаемое улучшение при использовании этих индексов составляло 52 %. После применения индексов, получился следующий плана исполнения:

А статистика данных после создания индексов выглядела так:

(170259 row(s) affected) Table ' CMPASOCIADOS'. Scan count 1, logical reads 2162, physical reads 0, read-ahead reads 0. Table ' TRANSAC'. Scan count 1, logical reads 1889, physical reads 0, read-ahead reads 24. Table ' TIPOSCMP'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0. Table ' TALONARIOS'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0.

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

Повторяем анализ, используя SQL Server 2005 Database Tuning Advisor (DTA)

Далее, автор хотел посмотреть, как тот же самый запрос будет проанализирован в DTA. Сначала, автор удалил созданные ранее индексы, а затем анализировал те же самые запрос и данные, используя DTA. В этом случае, план исполнения выглядел так:

Статистика данных, соответствующая исполняемому запросу, была следующей:

Table ' TRANSAC'. Scan count 1, logical reads 31004, physical reads 0, read-ahead reads 31008. Table ' CMPASOCIADOS'. Scan count 1, logical reads 8482, physical reads 19, read-ahead reads 4482. Table ' TIPOSCMP'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 2. Table ' TALONARIOS'. Scan count 1, logical reads 2, physical reads 2, read-ahead reads 0. (170259 row(s) affected)

Как видно, различия между статистиками запроса, исполняемого до оптимизации, минимальны, что и ожидалось. После этого, автор запустил DTA, и он предложил создать следующие ниже индексы, ожидая улучшения на 78 %.

CREATE NONCLUSTERED INDEX [ IXC2005_TRANSAC_6_98099390__K10_K30_K81_K1_K2_K105_K3_K55 ] ON [ dbo ].[ TRANSAC ] ( [ NROTRANSELIM ] ASC ,[ CODSUC ] ASC ,[ CODEMP ] ASC ,[ NROTRANS ] ASC ,[ DATE ] ASC ,[ NROTRANSCTRL ] ASC ,[ CODCMP ] ASC ,[ NROTRANSAUT ] ASC ) CREATE NONCLUSTERED INDEX [IXC2005_CMPASOCIADOS_6_437576597__K3_K1_K2_K8_K7 ] ON [ dbo ].[ CMPASOCIADOS ] ( [ CHECKBOOK ] ASC ,[ NROTRANS ] ASC ,[ CODCMP ] ASC ,[ NUMEROEXT ] ASC ,[ PREFIJOEXT ] ASC )

Уже здесь мы наблюдаем некоторые различия. С одной стороны, процент улучшения у ITW был 52 %, а у DTA - 78 %. С другой стороны, стоит обратить внимание на то, что предложенные индексы имеют различия.
Используем таблицу TRANSAC, и рассмотрим первые три поля. ITW предлагает следующий порядок полей в индексе: NroTrans, Date и Codcmp. В то же время, DTA предлагает другой порядок: NroTranselim, CodSuc и CodEmp.
То же самое и с таблицей CMPASOCIADOS. У ITW три первых поля: NroTrans, Codcmp и Checkbook, тогда как DTA предлагает: Checkbook, NroTrans и CodCmp.
Так как процесс исследование состоит из испытания и анализа, мы применяем предложенные индексы и получаем следующий план исполнения:

Статистика, полученная после выполнения запроса с новыми индексами, следующая:

Table ' CMPASOCIADOS'. Scan count 1, logical reads 619, physical reads 0, read-ahead reads 0. Table ' TRANSAC'. Scan count 1, logical reads 1757, physical reads 0, read-ahead reads 16. Table ' TIPOSCMP'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0. Table ' TALONARIOS'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0. (170259 row(s) affected)

Здесь, мы видим очень схожие цифры ITW и DTA для таблицы TRANSAC, но большие различия статистики для таблицы CMPASOCIADOS.
В то время, как оптимизация с помощью ITW дала 2162 логических чтений, после оптимизации DTA их осталось только 619.
Для полноты картины, проведём ещё одно испытание, чтобы проверить, какое из предложений индексов стоит выбрать. Для этого, нужно проверить индексы, рекомендованные DTA и ITW.

После перезапуск сервера, автор выполнил в Query Analyzer запрос, и получил следующую статистику:

(170259 row(s) affected) Table ' CMPASOCIADOS'. Scan count 1, logical reads 619, physical reads 0, read-ahead reads 0. Table ' TRANSAC'. Scan count 1, logical reads 1757, physical reads 0, read-ahead reads 0. Table ' TIPOSCMP'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 2. Table ' TALONARIOS'. Scan count 1, logical reads 2, physical reads 2, read-ahead reads 0.

Как можно видеть, статистика фактически та же самая, поэтому можно сделать заключение, что предлагаемые DTA индексы лучше.
Это подтверждает и то, что после создания предложенных DTA индексов, ITW больше не предлагал для них изменений. Вот отчёт ITW, который был получен после создания лучшей из предложенных схемы индексов:

[ dbo ].[ CMPASOCIADOS] [ IXC2005_CMPASOCIADOS_6_437576597__K3_K1_K2_K8_K7] 100,0 17280 [ dbo ].[ TRANSAC] [ IXC2005_TRANSAC_6_98099390__K10_K30_K81_K1_K2_K105_K3_K55] 100,0 15096

Заключение

Точно также, как ITW SQL Server 2000 лучше по сравнению с аналогом в SQL Server 7.0, DTA SQL Server 2005 Beta 3 стал выдавать более качественные рекомендации, чем его предшественник.
Возникает резонный вопрос, стоит ли продолжить оптимизировать базы данных SQL Server 2000 с помощью ITW, или стоит это делать средствами DTA?
По мнению автора, предстоит пройти ещё длинный путь, прежде чем мы сможем уверенно ответить на этот вопрос.

[В начало]

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

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

Data and Text Mining Tutorials
KAREN'S SQL BLOG
SQL Server's Data Mining team, aka DM Team, maintains a fantastic site I've mentioned before at http://www.sqlserverdatamining.com. You have to register, but once you do, you can read its newsletters, browse and search messages in its newsgroup (a copy of the microsoft.private.sqlserver2005.analysisservices.datamining newsgroup in case you don't have access to it, and download samples (data validation, for example), and other cool "extras" like a DataMiningViewerClient that lets you compare models side by side. The DM Team has also promised sample server-side controls that will be able to display decision trees and Naive Bayes models in browser clients

SQL Server Reporting Services: How to do an aggregate, SUM(Field), and display it as a % of the total for a Table or Matrix column
Mat Stephen's WebLog
To do this we have to take advantage of the fact that the SUM function, and indeed all aggregate functions, have an optional scope parameter

SSIS Resources
KAREN'S SQL BLOG
SQL Server 2005 Integration Services home page. http://msdn.microsoft.com/SQL/sqlwarehouse/SSIS/default.aspx

Give the New PIVOT and UNPIVOT Commands in SQL Server 2005 a Whirl
Michael Jones
Sometimes it's the little things that can simplify your life the most. Learn to combine SQL Server's PIVOT and UNPIVOT commands with Common Table Expressions to make your T-SQL code easier to read and produce more useful crosstabbed results

Letting Java in on SQL Server Notifications
Laurence Moroney
SQL Server's Notification Services let you instruct the database to let your applications or your users know when data changes or reaches critical thresholds. Furthermore, standard notification delivery methods ensure that notifications aren't limited to .NET or Windows clients Starting with SQL Server 2000, Microsoft added the concept of notification services to their flagship database engine. SQL Server Notification Services lets you generate and send notifications whenever some criterion is met. Generally, you use notifications to alert or update data for users or applications without having to repeatedly poll the database to discover whether data has changed or to display the latest data

Priority for System Administrator user?
Jeremy Kadlec
Is there any priority for the System Administrator (SA) user? I am a consultant and one of my clients has the application using the SA account. They want something (other than my word) that this is a performance issue (not to mention the security side). There are (at any one time) 50-75 user connections as SA -- all performing updates, queries and selects with some blocking issues

Security guide to hardening SQL Server 2000
Steven Andres
Where can I find a security guide to hardening SQL Server 2000? A great resource is the SQLsecurity.com Web site, operated by Chip Andrews. I'd also recommend Chip's excellent reference (co-authored with legendary database VULN expert, David Litchfield), SQL Server security, available from booksellers like Amazon (ISBN 0072225157) for about $45

New 2005 Feature: DDL triggers
The SQL Doctor is In
As a DBA, have you ever wanted to keep an eye on what is being created and deleted from the structure of your database? In 2000 you could use the profiler subsystem to keep up with the changes, but in 2005, with the implementation of DDL triggers, it will be an easy task. In the following sample code, I will build a DDL trigger that will log all create, alter and drop table commands executed in the database

Handling Different Row Types In The Same File
Allan Mitchell
Sometimes source systems like to send us text files that are a little out of the ordinary. More and more frequently we are seeing people being sent master and detail or parent and child rows in the same file. Handling this in DTS is painful. In SSIS that changes. In this article we'll take you through one file of this type and provide a solution which is more elegant than what we have today, and hopefully will give you ideas as to how you can handle your own versions of this type of file. As mentioned this is a simple solution but we could extend it to include more powerful processing techniques like performing lookups to see if we already have in our destination any of the rows coming through the pipeline etc. This is how our package should look when everything is finished

They did it! Relative paths in SSMS projects
Bob Beauchemin's Blog
For a long time I've been griping that SSMS projects (SQL Server Script projects) use absolute pathnames rather than relative paths. I didn't think it was going to be fixed, I'd received a reply “this works as expected”. This week, as I was explaining to students why they had the put the SSMS projects in a specific directory as always, someone noticed that it's fixed...relative path names for files in SSMS projects. You must open and save each project to get this behavior, but...works now

User-Defined string functions Transact-SQL
Igor Nikiforov
GETWORDCOUNT, GETWORDNUM, AT, RAT, OCCURS, PADC, PADR, PADL, CHRTRAN, STRFILTER, PROPER, RCHARINDEX, ARABTOROMAN, ROMANTOARAB etc. In my humble opinion, it will be convinient to apply such functions for writing of stored procedures and User-Defined Functions on Transact-SQL

RSS feed integration
Kamal Hathi
I (and others on my team, notably Donald Farmer) tend to do a demo showing data from RSS feeds being processed in the SSIS (SQL Server Integration Services) data flow pipeline. I have been asked by quite a few people to post a sample package showing how to incorporate RSS data

Why Extended Procedures Have Inherent Performance Issues
Ken Henderson's WebLog
To follow up on the recent discussions about regular expressions in T-SQL, I thought it would make sense today to talk about why xprocs have inherent performance issues. While they provide great extensibility to SQL Server, they have intrinsic performance and scalability implications that you should be aware of if you use them in SQL Server applications. Moreover, most of what limits them in terms of performance applies equally well to other types of extensibility such as COM objects and Yukon’s upcoming SQLCLR functionality. I’ll explain why in a moment

Combine MDF and NDF into a single MDF
Greg Robidoux
I currently have a Windows 2000 server with a 300GB+ SQL database that has four NDF data files. I will be moving this database to a Windows 2003 server and now have no need for multiple data files (MDF). Is it possible to combine the MDF and NDFs into a single MDF?

10 Steps to Securing your SQL Server
Brian Knight
Securing your SQL Server can be an arduous task, but very rewarding. Nothing makes me personally prouder than running a penetration test on a server that we just secured and not seeing any hot spots. This article will focus on the ways to easily secure your SQL Server. Although this takes care of some of the big issues, securing your SQL Server is an ongoing battle of constantly auditing and adjusting your plan. So without further ado, here's the laundry list of items to take care of on your SQL Server

SQL Server Performance Monitor
Steven Warren
You can monitor the system performance by using the Performance monitor console and its related counters in Windows 2000. These counters allow you to view or save information about the overall performance of your server. When you install Microsoft SQL Server, additional Performance monitor objects and counters are automatically installed. While you must have administrative access to your SQL Server to use these objects, SQL Server admins should find them invaluable in monitoring and tuning the database server. Furthermore, the Performance monitor can be used either locally or remotely, which allows admins greater control in monitoring SQL Server. I am going to show you how to use the Performance monitor to keep a close watch over your SQL Server systems

SSIS: Memory available to SSIS
Jamie Thomson's Blog
I was asked at a recent Conchango SQL Server community session how much memory SQL Server Integration Services (SSIS) was able to use and I had to confess that although I had an inkling about the 3GB Windows limit I didn't know the full details. Thankfully Ash Sharma did and he supplied the following info

SSIS: Using the Rowcount component
Jamie Thomson's Blog
A question was posted on a beta newsgroup recently asking for a demo of how to use the SSIS Rowcount component in a data flow. So, here's an example

DDL Trigger Experiment
Randy Dyess
Just finished the week of training in the U.K. and had a wonderful time. Nice group of people and SQL Server 2005 is a very interesting topic to talk about. So many changes – it was so hard just to cover a brief overview of the changes to the relational engine in one week. There is no way I could have done justice to the group if I tried to cover Analysis Services, Reporting Services, SSIS, etc, etc during the week in additional to the basic relational engine changes. There are just too many changes to cover in five days

Database Snapshots and Single Table Restores
Randy Dyess
I am sitting here in Chicago waiting for my final flight today on my way home. After a 4 hour layover, I am now facing delays to Dallas due to storms in the Dallas area. Reminds me of Last July when I spent 14 hours getting home from Columbus, OH. This normally two hour flight ended up taking me all day as we flew around in circles until we ran out of fuel then landed at Tulsa to sit on the tarmac there for 6 hours waiting for Dallas to reopen. Finally got the go ahead to take off and found ourselves being delayed again as a new round of storms moved in. Traveling for a living – don’t you love it

Conditionally taking an action based upon member existence
OLAP Monkey
Sometimes members might come and go for numerous reasons. Maybe one user has access to a member and the next does not...or maybe the relational data behind your member comes and goes (like time periods) for some reason. In any event, it's sometimes useful in MDX to be able to check whether a member is a valid member prior to performing some operation that uses that member

Recursive Calculated Member Against Member Property
OLAP Monkey
This example shows how to utilize a recursive calculated member to sum a numeric member property up to all it's parent levels. In this specific case, the Foodmart Store dimension has a "Store Sqft" member property which is numeric. That member property only lives at the leaf level (the Store Name level) of the dimension. In this example we create a calculated member that interrogates whether or not we are at the leaf level of the dimension...if we are, it will output the value of the "Store Sqft" member property...if we are not at the leaf level, then the calculated member will sum the value of itself (i.e. the recursive part) for all it's children

How do you find the product of a series of numbers using MDX?
OLAP Monkey
This posting shows how to use a recursive calculated member to find the product of a series of numbers. In the particular case illustrated, I'm using the Foodmart 2000 database (as I always do so that the concept is transportable to any reader)

Which "where" is better in SQL 2005 and Xml, or the difference between knowing and knowing (posted by Paul)
DDITWeb
One of the projects I’m working on is to take performance data generated from our build lab in xml and create nifty visualizations of the data so developers can see what impact the changes they are making have on their product's performance

Bookmark Lookups
Randy Dyess
One of the major overheads associated with the use of non-clustered indexes is the cost of bookmark lookups. Bookmark lookups are a mechanism to navigate from a non-clustered index row to the actual data row in the base table (clustered index) and can be very expensive when dealing with large number of rows

Featured Interview with Gert Drapers from Microsoft
sqlpass.org
An interview with Gert Drapers, SQL Server MVP and valuable SQL Server contributor

Service Broker over Remote Instances
Niels SQL Server Blog
Lately there has been questions on some of the newsgroups and forums how to set up SQL Server Service Broker to send messages between remote instances. Quite a while back I created some scripts to accomplish that, and I posted those scripts as answer to the questions

SSIS: Enumerating files in a Foreach loop
Jamie Thomson's Blog
I've just got back from a Charlatans gig at Hammersmith Palais in London. Anyone that knows me will tell you that I'm a massive massive Charlatans fan so I've had a great night. They played alot of stuff from earlier albums like "With No Shoes" from Tellin' Stories, "Inside Looking Out" from Up To Our Hips and "Here Comes A Soul Saver" from the eponymous fourth album; songs that I never thought I'd ever hear live again so after the gig I was buzzing

CTE+XML Limitation?
Yukonism
Is it possible to finally have a nested XML document on a recursive query? Let's say that we have a classic parent-child relationship inside a table that is self-refernced. An example of this situation can be found in the Employees table of Northwind DB or in the shining new AdventureWorks DB, HumanResources.Employee table

CTE and Hierarchical XML Result
Yukonism
Finally i've managed to have a hierarchical xml result from a CTE Query

Sql Server 2005 CREATE CERTIFICATE syntax change
Yukonism
I'm working on Service Broker and i've found a not documented (or maybe i haven't found the documentation?) change in the CREATE CERTIFICATE command

Making SQL Server 2005 Service Broker work between remote instances
Yukonism
If you need to setup two instances of Sql Server 2005 (I actually did it with Sql Server 2005 "Full" version and with the Express one) you can use the little sample you can find here

[В начало]

ФОРУМ SQL.RU

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

Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
Кто на чем пишет клиентов под SQL Server?
Новые упражнения на http://sql.ipps.ru
Больше книг хороших и разных!
SQL Server Health and History Tool (SQLH2) Reports
Как отследить ссылки на процедуру из других процедур?
Дедлок. U vs X
Прошу голосовать за SQL.RU в конкурсе Интернить 2005
Непонятности с использованием XLOCK хинта в select
две таблицы из одной
Нужена помощь в алгоритме триггера
Как заблокировать одну запись в таблице?
С Днем Рождения, Glory!
Как организовать собственный лог сообщений...
Как выбрать нужнкю строку из таблицы?
расширенная хранимая процедура
Одним select'ом исключить строки
SQL 6.5. Перенос базы, без потери связей.
Что не так в скрипте?
Думаю над стратегией бекапирования нашей базы. Прошу обсудить...

[В начало]

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

Кластер и слетевшие настройки
Нужен совет по ма-а-аленькому локальному поисковичку
FETCH_STATUS & Linked Server
Виснет вызов MSScriptControl, а за ним все последующие
SQL2005: использование НЕ NETBIOS имен серверов при репликации
Процедура sp_OAMethod 'load' XML из Sharepoint
Полнотектовый поиск
Как отправить с помощью sp_send_cdosysmail текст больше 8000 символов (вариант)

[В начало]


Вопросы, предложения, коментарии, замечания, критику и т.п. оставляйте Виталию Степаненко и Александру Гладченко в форуме: Обсуждение рассылки

СЕМИНАРЫ  КОНФЕРЕНЦИИ

МИНИФОРМА
ПОДПИСКИ



ПУБЛИКАЦИИ  АРХИВ


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.winsoft.sqlhelpyouself
Отписаться
Вспомнить пароль

В избранное