Published by

Comments

# Alexander Lozhechkin [MSFT]

Alexander Lozhechkin [MSFT]

Friday, April 15, 2005 10:25 PM by TrackBack

# re: Новая подсказка в запросе: OPTIMIZE FOR

Саша, рад что ты снова начал поддерживать свой блог ;) А фишка optimize for несомненно хороша, в работе вполне может пригодиться.

Thursday, August 17, 2006 7:50 AM by Николай Денищенко

# re: pwdencrypt and pwdcompare

Thanx for the info

Friday, September 15, 2006 8:13 AM by Ashish

# re: pwdencrypt and pwdcompare

pwdencrypt and pwdcompare functions does not appear in BOL or In MS SQL Server 2000 SP4, any reason for that?

Tuesday, September 19, 2006 10:06 PM by Tarik

# re: pwdencrypt and pwdcompare

Very helpful...Thank you very much!

Thursday, October 12, 2006 11:51 AM by Kasim

# re: pwdencrypt and pwdcompare

I am very Happy to see password encryption methodolgy. Fentastic

Saturday, October 14, 2006 4:29 AM by Nikhil Chaturvedi

# re: Вышла книга: Microsoft SQL Server. Полезные алгоритмы от SQL.RU

Купил книжку на www.oz.by. Доволен. Правда статей маловато. (Да, я знаю остальное можно, как всегда найти в инете, но хочеться иметь бумажную версию под рукой ;-) )

Thursday, October 19, 2006 2:55 AM by dimak

# re: pwdencrypt and pwdcompare

Great!!! Very helpfull

Thursday, November 16, 2006 7:15 AM by Folkert

# re: pwdencrypt and pwdcompare

excellent. you have effectively shown that these hash values from SQL Server 2000 are acceptable to SQL Server 2005.

Friday, November 17, 2006 6:33 PM by George

# Русская документация по SQL Server 2005 доступна!

Коллеги, не знаю как давно это случилось, но на MSDN2 появилась русская документация по SQL Server 2005.

Friday, January 26, 2007 1:54 AM by Community и их жизнь

# re: xp_servicecontrol и platform system function

I believe it's supposed to be 'QueryState', not a 'QueryStatus'

Monday, February 12, 2007 7:54 AM by BugsBunny

# re: xp_servicecontrol и platform system function

2 BugsBunny

Очень даже может быть... не ковырялись...

Thursday, February 22, 2007 3:41 AM by gladchenko

# re: pwdencrypt and pwdcompare

Alexander:

How difficult is guessing a password hashed with pwdencrypt?

Thursday, March 01, 2007 9:40 AM by Javier

# re: Приборная панель производительности SQL Server 2005

некоторые репорты не выполняются из-за ошибок...

Friday, March 09, 2007 3:36 AM by Winnipuh

# re: pwdencrypt and pwdcompare

2 Javier

It will strongly raise CPU utilization... (IMHO)

Friday, March 09, 2007 5:34 AM by gladchenko

# re: pwdencrypt and pwdcompare

An excellent entry, I did  reference to your blog, at one entry related to pwdencrypt and pwdcompare.

Regards.

Friday, March 09, 2007 11:12 AM by Teo Ortega

# re: Книга от разработчиков: Microsoft SQL Server 2005 Analysis Services. OLAP и многомерный анализ данных

Видел книгу на Олимпийском за 450 руб.

Thursday, March 15, 2007 8:39 AM by gladchenko

# SQL Server BLOGROLL

В последнее время, наиболее полезными и интересными ресурсами интернета, которые посвящены всему спектру

Monday, March 19, 2007 3:03 AM by Alexander Gladchenko

# re: マイクロソフト SQL Server 各チーム、関係者が書き綴るブログは 40 以上

re: マイクロソフト SQL Server 各チーム、関係者が書き綴るブログは 40 以上

Monday, March 19, 2007 3:26 AM by 河端善博の .TEXT でウェブログ

# Blog roll for SQL Server

I'm amazed to see the numerous list of Blog roll for SQL Server that comprises whole lot of professionals

Saturday, March 31, 2007 3:19 AM by External Links

# Дополнение к посту Александра Гладченко про SQL Server 2005 CD-KEY

В дополнение к посту <A href="msmvps.com/.../2007

Wednesday, June 06, 2007 3:38 AM by Yan Liberman

# re: Как определить, какой CD-KEY использовался для установки SQL Server 2005

Ян Либерман написал небольшой VB-скрипт, который показывает все относящиеся к SQL Server ключи: blogs.gotdotnet.ru/.../PermaLink.aspx

Wednesday, June 06, 2007 8:10 AM by gladchenko

# Какая версия BOL установлена на компьютере?

После того, как BOL стал обновляться через Microsoft Update , этот вопрос, наверняка, будет волновать

Wednesday, June 06, 2007 9:43 AM by Alexander Gladchenko

# Какая версия BOL установлена на компьютере?

После того, как BOL стал обновляться через Microsoft Update , этот вопрос, наверняка, будет волновать

Wednesday, June 06, 2007 9:52 AM by Alexander Gladchenko

# re: pwdencrypt and pwdcompare

Alexander:

In my first message, I had forgotten to thank you for the information. I have been doing tests. Very interesting.

Friday, June 15, 2007 5:06 PM by javier752003@hotmail.com

# Tips for DBA: Searching unused indexes (SQL Server 2005)

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

Tuesday, October 23, 2007 12:02 PM by imported

# Гаджеты на службе DBA

Практика показывает, что использование гаджетов (мини-приложений для боковой панели Windows Vista) для задач мониторинга производительности и работоспособности SQL Server оказывается очень удобным инструментом. Вся прелесть подобных мини-приложений в

Tuesday, October 23, 2007 12:03 PM by imported

# Утилита для запроса портов SQL Server

Portqry.exe - это запускаемая из командной строки или посредством графического пользовательского интерфейса программа, которую можно использовать при устранении неполадок с подключениями к SQL Server по протоколу TCP/IP. Средство Portqry.exe работает

Tuesday, October 23, 2007 12:03 PM by imported

# re: Способ определения версии SQL Server 2005 через PowerShell

По сути это тот же ФреймВорк, только в командной строке, ужас, вдруг админ себя программером почувствует! =)))

Thursday, October 25, 2007 11:00 AM by Knyazev Alexey

# re: Способ определения версии SQL Server 2005 через PowerShell

Ещё один способ, который не требует запуска служб:

Описание: Determines ssnetlib.dll version of SQL Server without the need to log into the server. Uses techniques from SQLPing.NET 1.3 beta but does not actually use the UDP 1434 packet for enumeration. This tool simply connects to the specified TCP port and gets to work! C# Source included. Requires .NET framework.

Размер скачиваемого файла: 4 K

Дата: 03/01/2005

Автор: Chip Andrews

Скачать: www.sqlsecurity.com/.../Default.aspx

Friday, October 26, 2007 4:45 AM by gladchenko

# Tips for DBA: Missing indexes recommendations (SQL Server 2005)

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

Wednesday, November 14, 2007 10:03 AM by Alexander Gladchenko

# re: Не «правильная» переустановка SQL Server 2005

How to manually remove a Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) instance

support.microsoft.com/.../320873

Tuesday, November 27, 2007 4:49 AM by gladchenko

# re: Tips for DBA: Missing indexes recommendations (SQL Server 2005)

Useful Tricks for Finding Missing and Bad Indexes in SQL Server 2005

glennberrysqlperformance.spaces.live.com/.../cns!45041418ECCAA960!770.entry

Friday, November 30, 2007 2:07 AM by gladchenko

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

Ещё одно, комплексное решение, учитывающее наличие LOB-полей: "SQL Server 2005 - Backup, Integrity Check and Index Optimization" ( blog.ola.hallengren.com/.../3440068.html )

Tuesday, April 01, 2008 1:10 AM by gladchenko

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

Для работы dm_db_index_physical_stats уровень совместимости базы данных должен быть не ниже 90.

Thursday, April 03, 2008 7:23 AM by gladchenko

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

Александр, а есть ли толк в дефрагментации не кластеризованных индексов? ИМХО нет, можно оставить только кластеризованные.

И ещё, для работы в режиме совместимости 80, вместо DB_ID() достаточно задать её через переменную, например

DECLARE @DB_ID int;

SET @DB_ID = (SELECT DB_ID());

И дальше вместо DB_ID() использовать @DB_ID.

Monday, April 21, 2008 7:34 AM by ЧайникПолный

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

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

Monday, April 21, 2008 9:05 AM by gladchenko

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

Александр, я конечно могу ошибаться...

>Дефрагментировать стоит любую материализуемую структуру :-)

Но, при перестроении индекса в куче (таблица, не имеющая кластеризованного индекса)фрагментация остаёться практически такой-же.

Здесь единственное (по крайней мере пока для меня единственное извесное) это создать в куче кластерный индекс и потом сразу его удалить, при создании он упорядочит данные и фрагментация уменьшиться.

Если база большая  ( > несколько сотен Гб), операции с индексами займут продолжительное время, во время перестройки индексов огромные очереди на дисках, работа базы сильно замедляеться, а если система 24/7 это не есть гуд, ИМХО лучше не тратить драгоценное время на перестроение некластерных индексов.

Tuesday, April 22, 2008 7:13 AM by ЧайникПолный

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

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

Размещение файлов и объектов среди файловых групп для больших баз данных нужно планировать так, чтобы нагрузка обслуживания индексов не оказывала чрезмерного воздействия на работу пользователей. Разумеется, для систем с поддержкой 365x24x7 необходимо учитывать требования высокой доступности, и использовать соответствующие решения. Реально, для этого нужен SQL Server 2005 Enterprise Edition, а новая версия  SQL Server 2008 привнесёт ещё больше свободы.

Кстати, для больших таблиц как раз выгоднее наличие короткого кластеризованного индекса, он поможет сгруппировать данные так, как выгодно с точки зрения производительной выборки… хотя бы заменит поиск – поиском по диапазону ключа ;)

Tuesday, April 22, 2008 7:56 AM by gladchenko

# re: Инкрементная модель выпуска заплат для SQL Server в действии

Команда выпуска сервисных пакетов внесла небольшие изменения в модель выпуска, теперь, больший упор будет сделан на  Incremental Servicing Model. Подробности можно почитать в блоге команды выпуска: blogs.msdn.com/.../a-changed-approach-to-service-packs.aspx

Monday, April 28, 2008 2:35 AM by gladchenko

# re: Инкрементная модель выпуска заплат для SQL Server в действии

И ещё одна полезная ссылка:

blogs.msdn.com/.../sql-server-2005-sp3-and-self-service-hotfixes.aspx

Monday, April 28, 2008 3:49 AM by gladchenko

# re: Как включить SQL Server 2005 в кластер

качественная статья для чайников которые всетях нечего не понимают!

Кстати шрифт по больше бы то не разглядят :))  

Tuesday, June 10, 2008 11:37 AM by Sables

# re: Tips for DBA: Used space by each table, index, and text or image column in a SQL Server 2000 database

Если не трудно, подскажите как быть для версии SQL 2005... я не совсем понимаю что именно происходит в сценарии, поэтому не могу самостоятельно перевести.

Спасибо.

Monday, June 30, 2008 2:16 PM by Влад

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

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

небольшая поправочка: не приводит

www.sqlskills.com/.../SearchEngineQA19MisconceptionsAroundIndexRebuildsAllocationBULKLOGGEDModeLocking.aspx

Monday, July 21, 2008 1:13 PM by vgoncharenko

# karlo4

Требования маленькие, но объем большой, скачал, дома буду изучать)))

Tuesday, September 16, 2008 8:32 AM by karlo4@mail.ru

# re: SQL Server BLOGROLL

Great list!  Keep up the good work.  I'll be going through this in the coming days and adding those that are active and have interesting content to the SQLblog Roller:

sqlblog.com/.../roller.aspx

Wednesday, September 17, 2008 8:56 AM by Adam Machanic

# re: SQL Server BLOGROLL

Huge blogroll list, some links aren't working though.

Tuesday, September 30, 2008 8:00 PM by Sql Server 2005

# re: Как определить, какой CD-KEY использовался для установки SQL Server 2005

Для 32х битного 2005 ,находится там же.

Спасибо

Monday, October 20, 2008 7:09 AM by Maxx

# re: Tips for DBA: выравнивание кластеров NTFS и блоков RAID-массивов

Все то, о чем написал Александр, конечно же нужно делать ДО ТОГО как. Ну а для тех, кто как я, забывает сделать это вовремя, может оказаться полезной инструкция как исправить геометрию дискового массива ПОСЛЕ ТОГО как на нем  был установлен и пропатчен SQL Server.

Итак имеем:

4-х узловый кластер Win2003 с 3-мя SQL Server 2005 инстансами;  необходимо исправить геометрию RAID массива каждого инстанса.

1. Каждый SQL Server инстанс должен находиться на отдельном узле.

2. На первом узле перевести все ресурсы в режим offline, за исключением дискового ресурса на котором был установлен SQL Server, скажем диска R.

3. Запустить Disk Management и посмотреть какой физический диск соответствует логическому диску R; допустим это диск 1.

4. В командной строке набрать:

diskpar –i 1

где 1 это номер физического диска.

Эта команда покажет Drive Partition Information, которая будет выглядеть примерно так:

StatringOffset = 32256 – это значение некорректно и должно быть изменено

PartitionLength = 2017118283264

HiddenSectors = 63 – это значение некорректно и должно быть изменено

PartitionNumber = 1

PartitionType = 7

5. Скопировать ВСЮ информацию с диска R на локальный диск C используя команду xcopy с параметрами копирования файлов и каталогов включая ownership и ACL.

xcopy R:\*.* C:\DiskR /E /K /O /X

6. Перевести диск R в режим offline.

7. Проверить существующие зависимости ресурса диск R от других ресурсов (должна быть только одна зависимость от службы SQL Server) и удалить ее.

8. Удалить ресурс диск R из кластерной группы.

9. Запустить Disk Management и удалить логический раздел R на физическом диске 1.

10. В командной строке запустить утилиту DISKPART и выполнить следующие команды:

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> create partition primary align=64

DiskPart succeeded in creating the specified partition.

DISKPART> exit

11. Проверить геометрию дискового массива 1 после исправления

diskpar –i 1

Теперь Drive Partition Information должна выглядеть примерно так:

StatringOffset = 65536  –  новое корректное значение

PartitionLength = 2017118249984

HiddenSectors = 128 –  новое корректное значение

PartitionNumber = 1

PartitionType = 6

12. Запустить Disk Management и пересканировать диски. Присвоить букву R физическому диску 1. Отформатировать диск R с 64 KB allocation unit size.

13. Создать ресурс диск R в кластерной группе.

14. Установить зависимость диска R от службы SQL Server.

15. Перевести диск R в режим online.

16. Скопировать информацию с локального диска C обратно на диск R.

xcopy C:\DiskR\*.* R:\ /E /K /O /X

17. Перевести все оставшиеся ресурсы кластерной группе в режим online.

18. Перезагрузить сервер на узле 1 (последнее может быть не обязательно, но так, на всякий случай).

19. Повторить 1 – 18 для оставшихся кластерных групп.

Tuesday, October 21, 2008 1:16 AM by Serhiy Snisarenko

# re: Tips for DBA: выравнивание кластеров NTFS и блоков RAID-массивов

Сергей, спасибо!

Один только вопрос, а почему у тебя смещение 128Кб? ...такой размер блока был выбран на RAID-массиве?

Tuesday, October 21, 2008 3:36 AM by gladchenko

# re: Tips for DBA: Missing indexes recommendations (SQL Server 2005)

SELECT  [Объект индексации]= OBJECT_NAME(mid.object_id),
                        [Рекомендуемый индекс]=
        '-- CREATE INDEX [IX_' + OBJECT_NAME(mid.object_id) + '_' +
        CAST(mid.index_handle AS nvarchar) + '] ON ' +
        mid.statement + ' (' +
                        case
                                   when mid.equality_columns IS NOT NULL and mid.inequality_columns IS NOT NULL
                                                then mid.equality_columns +’,’+ mid.inequality_columns
                                   when mid.equality_columns IS NULL and mid.inequality_columns IS NOT NULL 
                                                then mid.inequality_columns
                                   when mid.equality_columns IS NOT NULL and mid.inequality_columns IS NULL
                                                then mid.equality_columns
                        end
                        + ') '+
                        case
                                  when mid.included_columns IS NOT NULL 
                                                then 'INCLUDE (' + mid.included_columns+');'
                                 else ''
                        end,
  [Число компиляций] = migs.unique_compiles,
  [Число операций поиска] = migs.user_seeks,
  [Число операций просмотра] = migs.user_scans,
  [Средняя стоимость ] = CAST(migs.avg_total_user_cost AS int),
  [Средний процент выигрыша] = CAST(migs.avg_user_impact AS int)
 
FROM     sys.dm_db_missing_index_groups mig
JOIN     sys.dm_db_missing_index_group_stats migs
ON       migs.group_handle = mig.index_group_handle
JOIN     sys.dm_db_missing_index_details mid
ON       mig.index_handle = mid.index_handle
AND      mid.database_id = DB_ID()
ORDER BY mid.object_id

Monday, October 27, 2008 8:32 AM by gladchenko

# re: Tips for DBA: выравнивание кластеров NTFS и блоков RAID-массивов

Ещё один тест на сравнение производительности с выравниванием и без: forums.microsoft.com/.../ShowPost.aspx

Thursday, November 06, 2008 3:25 AM by gladchenko

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

SET NOCOUNT ON
SET DEADLOCK_PRIORITY LOW
DECLARE @SQL nvarchar(2048), @db int, @@SQL2 nvarchar(max), @ErrorID int
SET @@SQL2 = 'DECLARE @SQL nvarchar(2048);
'
DECLARE usersdatabases CURSOR GLOBAL FAST_FORWARD READ_ONLY FOR
SELECT database_id FROM sys.databases
WHERE (CAST(case when name in ('master','model','msdb','tempdb') then 1 else is_distributor end AS bit)=0
AND CAST(isnull(source_database_id, 0) AS bit)=0)
ORDER BY [name]

OPEN GLOBAL usersdatabases
WHILE 1 = 1
BEGIN
 FETCH usersdatabases INTO @db
 IF @@fetch_status <> 0 BREAK
 SET @@SQL2 = @@SQL2 + '
  USE ' + DB_NAME(@db) + ';
  DECLARE reindex' + CAST(@db AS nvarchar) + ' CURSOR GLOBAL FAST_FORWARD READ_ONLY FOR
  SELECT ''ALTER INDEX ALL ON ['' + DB_NAME(' + CAST(@db AS nvarchar) + ')+ '']..['' + OBJECT_NAME(afp.[OBJECT_ID]) + ''] REBUILD WITH (SORT_IN_TEMPDB = ON);'' AS [Инструкция T-SQL]
  FROM ' + DB_NAME(@db) + '.sys.dm_db_index_physical_stats (' + CAST(@db AS nvarchar) + ', NULL, NULL, NULL, ''SAMPLED'') AS afp
  WHERE afp.database_id = ' + CAST(@db AS nvarchar) + '
  AND afp.index_type_desc IN (''CLUSTERED INDEX'')
  AND (afp.avg_fragmentation_in_percent >= 15 OR afp.avg_page_space_used_in_percent <= 60)
  AND afp.page_count > 12
  UNION ALL
  SELECT [Инструкция T-SQL] =
   CASE
    WHEN afp.avg_fragmentation_in_percent >= 15
    OR afp.avg_page_space_used_in_percent <= 60
    THEN ''ALTER INDEX ['' + i.name + ''] ON ['' +  DB_NAME(' + CAST(@db AS nvarchar) + ') + '']..['' + OBJECT_NAME(afp.[OBJECT_ID]) + ''] REBUILD WITH (SORT_IN_TEMPDB = ON);''
    WHEN (afp.avg_fragmentation_in_percent < 15 AND afp.avg_fragmentation_in_percent >= 10)
    OR (afp.avg_page_space_used_in_percent > 60 AND afp.avg_page_space_used_in_percent < 75)
    THEN ''ALTER INDEX ['' + i.name + ''] ON ['' +  DB_NAME(' + CAST(@db AS nvarchar) + ')  + '']..['' + OBJECT_NAME(afp.[OBJECT_ID]) + ''] REORGANIZE;''
   END
  FROM ' + DB_NAME(@db) + '.sys.dm_db_index_physical_stats (' + CAST(@db AS nvarchar) + ', NULL, NULL, NULL, ''SAMPLED'') AS afp
  JOIN ' + DB_NAME(@db) + '.sys.indexes AS i
  ON (afp.[OBJECT_ID] = i.[OBJECT_ID] AND afp.index_id = i.index_id)
  AND afp.database_id = ' + CAST(@db AS nvarchar) + '
  AND afp.index_type_desc IN (''NONCLUSTERED INDEX'')
  AND (
    (afp.avg_fragmentation_in_percent >= 10 AND afp.avg_fragmentation_in_percent < 15)
   OR (afp.avg_page_space_used_in_percent > 60 AND afp.avg_page_space_used_in_percent < 75)
   )
  AND afp.page_count > 12
  AND afp.[OBJECT_ID] NOT IN ( 
       SELECT [OBJECT_ID]
       FROM ' + DB_NAME(@db) + '.sys.dm_db_index_physical_stats (' + CAST(@db AS nvarchar) + ', NULL, NULL, NULL, ''SAMPLED'')
       WHERE database_id = ' + CAST(@db AS nvarchar) + '
       AND index_type_desc IN (''CLUSTERED INDEX'')
       AND (avg_fragmentation_in_percent >= 15 OR avg_page_space_used_in_percent < 60)
       AND page_count > 1
      )
  ORDER BY [Инструкция T-SQL]'

  SET @@SQL2 = @@SQL2 + '
  OPEN GLOBAL reindex' + CAST(@db AS nvarchar) + '
  WHILE 1 = 1
  BEGIN
   FETCH reindex' + CAST(@db AS nvarchar) + ' INTO @SQL
   IF @@fetch_status <> 0 BREAK
   EXEC(@SQL)
   PRINT @SQL
  END
  CLOSE GLOBAL reindex' + CAST(@db AS nvarchar) + '
  DEALLOCATE GLOBAL reindex' + CAST(@db AS nvarchar) + ''

--PRINT @db
END
CLOSE GLOBAL usersdatabases
DEALLOCATE usersdatabases
DECLARE @SQL1 nvarchar(500)
--PRINT @@SQL2
EXECUTE master..sp_executesql
    @@SQL2
    ,N'@SQL1 nvarchar(2048) OUTPUT'
    ,@SQL1 = @SQL1 OUTPUT
--PRINT('----------------------')
--PRINT @SQL1
GO

Thursday, November 13, 2008 11:04 AM by gladchenko

# re: Tips for DBA: Deadlock Event Notifications

Ещё один метод "Proactive Deadlock Notifications": blogs.lessthandot.com/.../DataMgmt

Тут используется DBCC TRACEON (3605,1204,1222,-1)

Monday, November 17, 2008 9:17 AM by gladchenko

# re: Tips for DBA: Using sys.dm_db_index_physical_stats in a script to rebuild or reorganize indexes (no partitions / SQL Server 2005)

Ещё один сценарий: weblogs.asp.net/.../6819737.aspx

Monday, January 12, 2009 12:37 PM by gladchenko

# re: Бизнес - требования к администрированию базы данных

Спасибо Александр за описание требований к обслуживанию БД. Это очень полезные два документа, которые формализуют деятельность DBA.

Tuesday, January 13, 2009 2:51 AM by Ruslan

# Обновите свои новостные каналы лентами из SQL Server BLOGROLL 2009

Уже стало для меня некой традицией в начале года верстать очередной, актуальный BlogROLL . За основу

Tuesday, January 13, 2009 5:12 AM by Alexander Gladchenko

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

И где ее можно купить?

Saturday, January 17, 2009 10:00 PM by Николай Курков

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Список магазинов: www.ecom.ru/SiteItem.aspx

Sunday, January 18, 2009 7:29 AM by gladchenko

# Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Эта новость появилась в блоге itcommunity.ru - Издательство Эком Паблишерз выпустил в свет "Репликация

# re: SQL Server BLOGROLL 2009

Вы же наверное ни все читаете из этого. Назовите TOP 5 блогов для Вас.

Monday, January 19, 2009 7:44 AM by Ruslan

# re: SQL Server BLOGROLL 2009

Слежу за всем, а читаю только то, что заинтересует. Мало того, все полезные материалы складываю в архив, по которому потом могу искать локальным поиском (так получается эффективнее, чем "гуглить"). Лучшую пятёрку назвать не берусь... тут дело сотней попахивает :)))

Monday, January 19, 2009 10:24 AM by gladchenko

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Первый магазин, разместивший информацию о книге на своём сайте: www.mdk-arbat.ru/bookcard_all4.aspx

Wednesday, January 21, 2009 7:55 AM by gladchenko

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Книга на ОЗОНЕ: www.ozon.ru/.../4263488

Thursday, January 22, 2009 1:23 AM by gladchenko

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

На озоне книги нет :)

Точнее: "Сообщить о поступлении в продажу".

Thursday, January 22, 2009 6:32 AM by Дедушка

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Альянс-книга: www.alians-kniga.ru/.../UID_463.html

Friday, January 23, 2009 2:15 PM by gladchenko

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Теперь сборник можно заказать на сайте издательства ЭКОМ: www.ecom.ru/BookItem.aspx

Thursday, January 29, 2009 6:56 AM by gladchenko

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Сборник на сайте сети книжных магазинов "Деловая литература" г. Ростов-на-Дону: www.bbook.ru/modules.php

Thursday, January 29, 2009 7:09 AM by gladchenko

# Дополнение к посту Александра Гладченко про SQL Server 2005 CD-KEY

В дополнение к посту Александра Гладченко “Как определить, какой CD-KEY использовался для установки SQL...

Saturday, January 31, 2009 4:47 AM by Russian SQL Server Club

# re: Репликация SQL Server 2005/2008. Сборник статей от сообщества SQL.RU

Ещё сылки, где можно заказать или найти нашу книгу:

http://books.allmedia.ru/showTov.asp?Cat_Id=574828
http://books.businesstest.ru/showTov.asp?FND=&Cat_id=575281
http://books.claw.ru/showTov.asp?Cat_Id=574828
http://books.md.icsmir.ru/showTov.asp?Cat_Id=574828
http://dmu201.semir.mesi.ru/showTov.asp?Cat_Id=574828
http://kniga4.ru/good/4263488
http://litera.by/book14755.html
http://market.yandex.ru/model.xml?modelid=3974592
http://russia-book.ru/book.php?t=4341265&go=1070843
http://shop.top-kniga.ru/books/item/in/399815/
http://vaschakniga.ru/view.php?t=639023&go=11283
http://www.alians-kniga.ru/shop/UID_463.html
http://www.bbook.ru/modules.php?name=Book&k=0023238
http://www.biblion.ru/product/604246/
http://www.booka.ru/books/411427
http://www.bookin.org.ru/books/j33000012871.html
http://www.bookler.ru/bookbuy/55/435712.shtml
http://www.bookline.ru/book4263488.htm
http://www.bookoved.ru/kn.php?t=587037&go=46
http://www.books.ru/shop/books/641275
http://www.favorite-book.ru/cart.php?action=addcart&info=4263488
http://www.goodreads.ru/books/1998430/default.aspx
http://www.gorbushka.ru/?search=%E3%EB%E0%E4%F7%E5%ED%EA%EE&submit.x=41&submit.y=10
http://www.hugahuga.ru/item/1002415550.html
http://www.knigi-o.com/product_info.php?products_id=59983&osCsid=ad49b9700735a7dcbae588beeb783c0f
http://www.kupitknigu.ru/books/1778991.shtml
http://www.labirint-shop.ru/books/187884/
http://www.libring.ru/book385283
http://www.lit.by/production/view/?id=62287
http://www.mdk-arbat.ru/bookcard_all4.aspx?book_id=2532277
http://www.moscowbooks.ru/book.asp?id=448649
http://www.my-shop.ru/shop/books/435712.html
http://www.ozon.ru/context/detail/id/4263488/
http://www.qpig.ru/showTov.asp?Cat_Id=574828
http://www.regionbook.ru/goods.php?id=11488
http://www.sprinter.ru/books/1778991.html
http://www.ukazka.ru/product-book469472.html
http://www.wwww4.com/w4198/620572.htm
http://www.ykbook.ru/goods.php?id=11325
http://www.zone-x.ru/showTov.asp?Cat_Id=574828
http://www.anybook.ru/index.php

Monday, February 02, 2009 7:12 AM by gladchenko

# re: 101 далматинец

Для SQL Server 2008 ситуация изменилась, разница между TOP 100 и TOP 101 уже не так заметна и ROWCOUNT даёт сравнимые по времени результаты.

Wednesday, February 04, 2009 4:02 AM by gladchenko

# re: Tips for DBA: The Spy for stored procedures

Не разбирался. Но.

select @@version

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Msg 14234, Level 16, State 1, Procedure sp_verify_job, Line 192

The specified '@notify_email_operator_name' is invalid (valid values are returned by sp_help_operator).

Msg 14294, Level 16, State 1, Procedure sp_verify_job_identifiers, Line 20

Supply either @job_id or @job_name to identify the job.

Msg 14294, Level 16, State 1, Procedure sp_verify_job_identifiers, Line 20

Supply either @job_id or @job_name to identify the job.

Msg 8145, Level 16, State 1, Procedure sp_add_jobschedule, Line 0

@schedule_uid is not a parameter for procedure sp_add_jobschedule.

Msg 14294, Level 16, State 1, Procedure sp_verify_job_identifiers, Line 20

Supply either @job_id or @job_name to identify the job.

Monday, February 16, 2009 10:17 PM by Dmitry

# re: Новая подсказка в запросе: OPTIMIZE FOR

“Optimize For” enhancement in SQL Server 2008: decipherinfosys.wordpress.com/.../optimize-for-enhancement-in-sql-server-2008

Tuesday, February 17, 2009 8:47 AM by gladchenko

# re: Tips for DBA: The Spy for stored procedures

TO Dmitry,

Это моя промашка, не следовало оператора задавать, которого у других нет :( Попробуйте закоментировать строку, как после моего исправления...

Tuesday, February 17, 2009 8:53 AM by gladchenko

# re: Tips for DBA: The Spy for stored procedures

Под руками только 2005 сервер.

Поэтому еще строчку:

--, @schedule_uid=N'ffb0a0d2-93bc-49d0-9fc7-4e35140bfd9f'

закомментировать, чтобы ошибки не было:

@schedule_uid is not a parameter for procedure sp_add_jobschedule.

Monday, February 23, 2009 11:06 PM by Dmitry

# Tips for DBA: Signal Waits vs. Resource Waits

Прочитал сегодня интересный рецепт, как быстро определить, кто даёт слабину, процессор или дисковая...

Thursday, April 02, 2009 10:30 AM by Russian SQL Server Club

# re: Tips for DBA: Signal Waits vs. Resource Waits

Приветствую!

Я так понял что идеальная система должна стремиться к отношению 50% / 50% ?

Обязательно проверю на своих подопечных! :)

Хорошая заявка на инструмент экспресс оценки прозводительности сервера.

Thursday, April 02, 2009 12:34 PM by Илгиз Мамышев

# re: Tips for DBA: Signal Waits vs. Resource Waits

Нашёл вот такую информацию:

------

sqlcat.com/.../sql-server-2005-oltp.aspx

------

Признаки нехватки ресурсов ЦП

•Значение счетчика SignalWaits превышает 25 % от общего времени ожидания. Просмотреть значения времени ожидания сигнала и общего времени ожидания можно в представлении sys.dm_os_wait_stats. SignalWaits — это время, проведенное в очереди на запуск в ожидании процессора. Высокое значение этого параметра свидетельствует о нехватке ресурсов процессора.

------

т.е. если по колонке "ожидание сигнала %" мы получаем число 25% и выше - необходимо рассмотреть вопрос замены ЦП на более производительные или увеличить их количество.

Friday, April 03, 2009 3:01 AM by Илгиз Мамышев

# re: Tips for DBA: Signal Waits vs. Resource Waits

Похоже, что сооношение должно быть близко к 20/80 :)))

Friday, April 03, 2009 5:14 AM by gladchenko

# re: Tips for DBA: Signal Waits vs. Resource Waits

Я исправил пару ошибок в сценарии и поменял результаты, теперь должно правильно показывать (Спасибо Сергею Гавриленко за внимательность)

Friday, April 03, 2009 9:57 AM by gladchenko

# re: Tips for DBA: Signal Waits vs. Resource Waits

BCE!                                   0.77 99.23 33334353412

BROKER_RECEIVE_WAITFOR  0.00 100.00 5577445296

BROKER_TASK_STOP             0.01 99.99 3467775000

SQLTRACE_BUFFER_FLUSH     0.00 100.00 3466867968

LAZYWRITER_SLEEP              0.02 99.98 3466695109

BACKUPBUFFER                    0.90 99.10 3307504062

WRITELOG                           3.49 96.51 2522062093

CXPACKET                            0.47 99.53 1997941718

PAGEIOLATCH_SH                  0.07 99.93 1726839843

BACKUPIO                            1.10 98.90 1201220781

LCK_M_IX                             0.05 99.95 1052778187

ASYNC_IO_COMPLETION        0.00 100.00 963511093

LCK_M_U                              0.30 99.70 794246921

OLEDB                                  0.00 100.00 648973906

LCK_M_IS                             0.02 99.98 579903093

PAGEIOLATCH_EX                  0.19 99.81 558565531

LCK_M_S                              0.02 99.98 426800484

ASYNC_NETWORK_IO             2.60 97.40 372790531

LATCH_EX                            0.77 99.23 342325265

PAGELATCH_SH                    0.16 99.84 154191937

LCK_M_SCH_S                      0.00 100.00 128086390

Friday, April 03, 2009 10:25 AM by achehov

# re: Tips for DBA: Signal Waits vs. Resource Waits

Счетчики с одного из продакшен серверов, БД "ИТ-Предприятие" http://www.it.ua/

Тип ожидания                                                 ожидания сигнала %     ожидания ресурса %     ожидания ms          

------------------------------------------------------------ ---------------------- ---------------------- --------------------

BCE!                                                                            .04                  99.96           5147048373

LAZYWRITER_SLEEP                                                                .00                 100.00           4898999906

BROKER_TASK_STOP                                                                .00                 100.00             93756515

BROKER_RECEIVE_WAITFOR                                                          .00                 100.00             40067593

PAGEIOLATCH_SH                                                                  .07                  99.93             20876453

MSQL_DQ                                                                         .00                 100.00             15833046

CXPACKET                                                                       2.79                  97.21             13921187

BACKUPIO                                                                        .05                  99.95             11823671

ASYNC_IO_COMPLETION                                                             .00                 100.00              9554437

BACKUPBUFFER                                                                    .10                  99.90              9515000

OLEDB                                                                           .00                 100.00              8276500

BACKUPTHREAD                                                                    .03                  99.97              4446234

DTC                                                                             .00                 100.00              4265875

SLEEP_BPOOL_FLUSH                                                               .38                  99.62              3841156

SLEEP_TASK                                                                     5.71                  94.29              3395703

ASYNC_NETWORK_IO                                                               4.79                  95.21              1505109

PAGEIOLATCH_EX                                                                  .06                  99.94              1464828

WRITELOG                                                                       1.38                  98.62              1354609

SOS_SCHEDULER_YIELD                                                           99.03                    .97              1099296

SQLTRACE_BUFFER_FLUSH                                                           .00                 100.00               608000

LCK_M_IS                                                                        .00                 100.00               566703

Tuesday, April 07, 2009 3:58 AM by MaksBragar

# re: Tips for DBA: INSERT Overclocking

Вспомнил ещё один фактор, который может существенно усложнить вставку - это наличие у таблицы материализованных представлений.

Thursday, April 09, 2009 1:35 AM by gladchenko

# re: Tips for DBA: Table operational/physical stats

Выполнил запрос на своей продуктовой базе (sql2005,x64,EE+sp3) - некоторые таблицы повторяются с различными данными...:(

Wednesday, April 22, 2009 4:18 AM by vic29

# re: Tips for DBA: Table operational/physical stats

Если у вас используется секционирование, нужно соответственно переделать этот сценарий.

Wednesday, April 22, 2009 4:52 AM by gladchenko

# re: Tips for DBA: Table operational/physical stats

Секционирования нет, данные отличаются только в этих колонках :

[TableName]| [Pages]| [Rows]| [AverageRecordBytes]| [AverageFragmentationPercent]

...

_Anthology 23 570 288 4

_Anthology 553 1177 2760 0

...

_Anthology_Lang 25 59 2981 0

_Anthology_Lang 2 23 555 50

_Editorial 2 42 191 50

_Editorial 36 88 2394 0

_EditorialAuthors 1 5 272 0

_EditorialAuthors 1 10 450 0

_Errors 89700 1043600 614 0

_Errors 10504 491000 166 3

...

Wednesday, April 22, 2009 7:15 AM by vic29

# re: Tips for DBA: Table operational/physical stats

Я поправил сценарий (убрал неклаастеризованные индексы), попробуйте ещё...

Friday, April 24, 2009 5:18 AM by gladchenko

# re: Tips for DBA: Percentage of work completed for DBA commands

Для UPDATE STATISTICS почему-то не работает, зато работает с ALTER FULLTEXT CATALOG .. REORGANIZE.

Friday, April 24, 2009 6:29 AM by ak

# Tips for DBA: Log Flush Performance

Одной из распространённых задач систем с высокой транзакционной загрузкой является определение того,...

Monday, June 08, 2009 7:57 AM by Russian SQL Server Club

# SQL Server: Методика тестирования дисковой подсистемы

msmvps.com/.../1694801.aspx(на примере полки с 14 одинаковыми...

Wednesday, June 10, 2009 2:46 AM by Russian SQL Server Club

# re: Tips for DBA: Signal Waits vs. Resource Waits

Счетчики с продакшен базы:

Тип ожидания ожидания сигнала % ожидания ресурса % ожидания ms

BCE! .13 99.87 19413365701

LAZYWRITER_SLEEP .01 99.99 6227846031

SQLTRACE_BUFFER_FLUSH .00 100.00 6227180125

OLEDB .00 100.00 6169222328

SLEEP_TASK .65 99.35 538197218

CXPACKET 7.09 92.91 165990468

ASYNC_NETWORK_IO .34 99.66 23205843

SOS_SCHEDULER_YIELD 94.12 5.88 8819953

LCK_M_IS .06 99.94 8420765

MSSEARCH .00 100.00 7732406

ASYNC_IO_COMPLETION .00 100.00 6851875

BACKUPBUFFER .19 99.81 6766156

WRITELOG 7.90 92.10 3994625

LATCH_EX 14.17 85.83 2917812

MSQL_DQ .00 100.00 2289390

BACKUPIO .16 99.84 1883843

SLEEP_BPOOL_FLUSH 2.59 97.41 1578640

PAGEIOLATCH_SH .82 99.18 1454656

BACKUPTHREAD .00 100.00 1445312

WAITFOR .00 100.00 1211234

SQLTRACE_LOCK .06 99.94 1183125

Thursday, June 18, 2009 11:34 AM by 1klassNick

# MSMQ 3.0 в Кластере

Здесь будет идти речь о кластере Windows Server 2003 Enterprise Edition и о запуске в кластере службы...

Thursday, June 25, 2009 4:41 AM by Russian SQL Server Club

# re: Tips for DBA: SQL Server Inventory (PowerShell)

--Сценарий T-SQL инвентаризации установки SQL Server.

--Был найден в документе IBM "Consolidating Microsoft SQL Server on the IBM System x3950 M2".

--Example 4-2 Transact SQL script to help gather information

set nocount on

set dateformat dmy

set nocount on

set concat_null_yields_null off

use master

go

DECLARE @SysInfo INT

DECLARE @DomainName VARCHAR(128)

EXEC sp_OACreate 'ADSystemInfo', @SysInfo OUTPUT

EXEC sp_OAGetProperty @SysInfo, 'DomainShortName', @DomainName OUTPUT

print ''

print '1. General Info'

print '**********************************************'

print ''

print 'Server Name................: ' + convert(varchar(100), serverproperty('ServerName'))

print 'Physical Server Name.......: ' + convert(varchar(100), serverproperty('MachineName'))

print 'Domain Name................: ' + isnull(@DomainName, 'NOT ON DOMAIN')

print 'Instance Name..............: ' + convert(varchar(30),@@SERVICENAME)

print 'SQL Server version.........: ' + convert(varchar(100), serverproperty('productversion'))

print 'Edition....................: ' + convert(varchar(100), serverproperty('edition'))

print 'Service Pack Level.........: ' + convert(varchar(100), serverproperty('productlevel'))

print 'Authentication Mode........: ' + case when serverproperty('IsIntegratedSecurityOnly') = 1 then

'Windows Integrated' else 'Mixed Mode' end

print 'Is Clustered...............: ' + case when serverproperty('IsClustered') = 1 then 'Yes' else 'No'

end

print 'License Type...............: ' + convert(varchar(100), serverproperty('LicenseType'))

print 'Number of Licenses.........: ' + convert(varchar(100), serverproperty('NumLicenses'))

print 'Default Instance Collation.: ' + convert(varchar(100), serverproperty('collation'))

go

print ''

print '2. System Information.'

print '**********************************************'

print ''

exec master..xp_msver

go

print ''

print '3. Other information'

print '**********************************************'

print ''

print 'Number of connections..: ' + convert(varchar(30),@@connections)

print 'Language...............: ' + convert(varchar(30),@@language)

print 'Lock Timeout...........: ' + convert(varchar(30),@@LOCK_TIMEOUT)

print 'Maximum of connections.: ' + convert(varchar(30),@@MAX_CONNECTIONS)

print 'CPU Busy...........: ' + convert(varchar(30),@@CPU_BUSY/1000)

print 'CPU Idle...........: ' + convert(varchar(30),@@IDLE/1000)

print 'IO Busy............: ' + convert(varchar(30),@@IO_BUSY/1000)

print 'Packets received...: ' + convert(varchar(30),@@PACK_RECEIVED)

print 'Packets sent.......: ' + convert(varchar(30),@@PACK_SENT)

print 'Packets w errors...: ' + convert(varchar(30),@@PACKET_ERRORS)

print 'TimeTicks..........: ' + convert(varchar(30),@@TIMETICKS)

print 'IO Errors..........: ' + convert(varchar(30),@@TOTAL_ERRORS)

print 'Total Read.........: ' + convert(varchar(30),@@TOTAL_READ)

print 'Total Write.........: ' + convert(varchar(30),@@TOTAL_WRITE)

go

print ''

print '4. Database Information'

print '**********************************************'

print ''

exec master..sp_helpdb

go

PRINT ''

Print '5. Lists of users/groups with DBA privileges'

print '**********************************************'

PRINT ''

DECLARE @Statement VARCHAR(255)

SELECT @Statement = 'SELECT ISNULL(name,loginname) as ' +

'''System Admin Role Users''' +

'FROM master..syslogins where sysadmin = 1'

EXEC (@Statement)

IF @@rowcount =0

PRINT '!!!! No One has System Admin rights !!!!'

PRINT ''

print ''

print '6. List of special users per database'

print '**********************************************'

print ''

declare @name sysname,

@SQL nvarchar(600)

if exists (select [id] from tempdb..sysobjects where [id] = OBJECT_ID ('tempdb..#tmpTable'))

drop table #tmpTable

CREATE TABLE #tmpTable (

[DATABASE_NAME] sysname NOT NULL ,

[USER_NAME] sysname NOT NULL,

[ROLE_NAME] sysname NOT NULL

)

declare c1 cursor for select name from master.dbo.sysdatabases

open c1

fetch c1 into @name

while @@fetch_status >= 0

begin

select @SQL =

'insert into #tmpTable

select N'''+ @name + ''', a.name, c.name

from ' + QuoteName(@name) + '.dbo.sysusers a

join ' + QuoteName(@name) + '.dbo.sysmembers b on b.memberuid = a.uid

join ' + QuoteName(@name) + '.dbo.sysusers c on c.uid = b.groupuid

where a.name != ''dbo'''

exec(@SQL)

fetch c1 into @name

end

close c1

deallocate c1

select * from #tmpTable

drop table #tmpTable

go

print ' '

print ' 7. Datafiles list '

print '**********************************************'

print ' '

if exists (select [id] from tempdb..sysobjects where [id] = OBJECT_ID ('tempdb..#TempForFileStats '))

DROP TABLE #TempForFileStats

if exists (select [id] from tempdb..sysobjects where [id] = OBJECT_ID ('tempdb..#TempForDataFile'))

DROP TABLE #TempForDataFile

if exists (select [id] from tempdb..sysobjects where [id] = OBJECT_ID ('tempdb..#TempForLogFile'))

DROP TABLE #TempForLogFile

DECLARE @DBName nvarchar(40)

DECLARE @SQLString nvarchar (2000)

DECLARE c_db CURSOR FOR

SELECT name

FROM master.dbo.sysdatabases

WHERE status&512 = 0

CREATE TABLE #TempForFileStats( [Database Name] nvarchar(40),

[File Name] nvarchar(128),

[Usage Type] varchar (6),

[Size (MB)] real,

[Space Used (MB)] real,

[Growth Type] varchar (12),

[File Id] smallint,

[Group Id] smallint,

[Physical File] nvarchar (260),

[Date Checked] datetime

)

CREATE TABLE #TempForDataFile ( [File Id] smallint,

[Group Id] smallint,

[Total Extents] int,

[Used Extents] int,

[File Name] nvarchar(128),

[Physical File] nvarchar(260)

)

CREATE TABLE #TempForLogFile ( [File Id] int,

[Size (Bytes)] real,

[Start Offset] varchar(30),

[FSeqNo] int,

[Status] int,

[Parity] smallint,

[CreateTime] varchar(30)

)

OPEN c_db

FETCH NEXT FROM c_db INTO @DBName

WHILE @@FETCH_STATUS = 0

BEGIN

SET @SQLString = 'select ''' + @DBName + '''' + ' as ''Database'', ' +

' f.name, ' +

' CASE ' +

' WHEN (64 & f.status) = 64 THEN ''Log'' ' +

' ELSE ''Data'' ' +

' END as ''Usage Type'', ' +

' f.size*8/1024.00 as ''Size (MB)'', ' +

' NULL as ''Space Used (MB)'', ' +

' CASE ' +

' WHEN (1048576&f.status) = 1048576 THEN ''Percentage'' ' +

' ELSE ''Pages'' ' +

' END as ''Usage Type'', ' +

' f.fileid, ' +

' f.groupid, ' +

' filename, ' +

' getdate() ' +

' FROM ' + @DBName + '.dbo.sysfiles f'

INSERT #TempForFileStats

exec(@SQLString)

SET @SQLString = 'USE ' + @DBName + ' DBCC SHOWFILESTATS'

INSERT #TempForDataFile

exec(@SQLString)

UPDATE #TempForFileStats

SET [Space Used (MB)] = s.[Used Extents]*64/1024.00

FROM #TempForFileStats f,

#TempForDataFile s

WHERE f.[File Id] = s.[File Id]

AND f.[Group Id] = s.[Group Id]

AND f.[Database Name] = @DBName

TRUNCATE TABLE #TempForDataFile

SET @SQLString = 'USE ' + @DBName + '; DBCC LOGINFO'

INSERT #TempForLogFile

exec(@SQLString)

UPDATE #TempForFileStats

SET [Space Used (MB)] = (SELECT (MIN(l.[Start Offset]) +

SUM(CASE

WHEN l.Status <> 0 THEN l.[Size (Bytes)]

ELSE 0

END))/1048576.00

FROM #TempForLogFile l

WHERE l.[File Id] = f.[File Id])

FROM #TempForFileStats f

WHERE f.[Database Name] = @DBName

AND f.[Usage Type] = 'Log'

TRUNCATE TABLE #TempForLogFile

FETCH NEXT FROM c_db INTO @DBName

END

DEALLOCATE c_db

SELECT * FROM #TempForFileStats

DROP TABLE #TempForFileStats

DROP TABLE #TempForDataFile

DROP TABLE #TempForLogFile

go

Tuesday, July 07, 2009 3:37 AM by gladchenko

# Настройка Windows Server 2008/2003 x64 для обслуживания SQL Server 2008

По состоянию на 2009 год Эта статья - вольная интерпретация рекомендаций: Microsoft, IBM, HP, Dell,...

Thursday, August 20, 2009 3:11 AM by Russian SQL Server Club

# re: Настройка Windows Server 2008/2003 x64 для обслуживания SQL Server 2008

Я уже коментировал на itcommunity.com, но хотелось бы всё таки уяснить для себя кое-что. Там мне ответили что UAC не нужен на сервере, потому что таковы рекомендации вендоров, указанных вначале статьи. Есть пруфлинки на такие рекомендации для UAC?

Thursday, August 20, 2009 5:38 AM by iura

# re: Настройка Windows Server 2008/2003 x64 для обслуживания SQL Server 2008

В документе Майкрософт "Performance Tuning Guidelines for Windows Server 2008 R2 (June 25, 2009)" есть такая рекомендация:

• Navigate to Start > All Programs > Administrative Tools > System Configuration Tools tab, disable User Account Control (UAC) by selecting Disable UAC, and then reboot the system.

Thursday, August 20, 2009 9:31 AM by gladchenko

# Флаги трассировки, рекомендованные Майкрософт для эталонного теста производительности TPC-C

По материалам статьи: Microsoft SQL Server 2005 TPC-C Trace FlagsВольный перевод Александра Гладченко...

Monday, August 24, 2009 5:43 AM by Russian SQL Server Club

# Флаги трассировки, рекомендованные Майкрософт для эталонного теста производительности TPC-E

По материалам статьи: Microsoft SQL Server 2008 TPC-E Trace FlagsВольный перевод Александра Гладченко...

Monday, August 24, 2009 5:45 AM by Russian SQL Server Club

# Query Processor Modeling Extensions

По материалам стать Иан Джоз (Ian Jose): Query Processor Modelling Extensions in SQL Server 2005 SP1Перевод...

Tuesday, September 01, 2009 8:18 AM by Russian SQL Server Club

# re: Настройка Windows Server 2008/2003 x64 для обслуживания SQL Server 2008

Александр, в данной статье вы рекомендуете включить "Lock pages in memory", а на форуме technet (social.technet.microsoft.com/.../2dac3aab-586f-4f67-a8c3-c9fb3281d9ad) пишете обратное:

"Закрепление страниц в памяти - это крайняя мера. Без нужды этой возможностью пользоваться не стоит, мало того, это может оказаться даже опастным... лучше ещё памяти добавить."

Какой из этих двух рекомендаций следует доверять?

Wednesday, September 23, 2009 3:54 AM by Andrey

# re: Настройка Windows Server 2008/2003 x64 для обслуживания SQL Server 2008

Andrey,

Не вижу там противоречий. Данная статья представляет собой перечень рекомендаций вендоров и не предусматривает применение этих рекомендаций без нужды. Ответ в блоге касается конкретной ситуации.

В случае, когда сервер обслуживает только один экземпляр СУБД и наблюдаются листания, вполне может оказаться полезным включение предлагаемой в статье политики и воспрепятствовать выгрузке страниц из пула для SQL Server. Но это не от хорошей жизни... Как я понимаю, в TPC-H и TPC-C этим пользуются потому, чтобы съэкономить на оперативке (она дорогая). Но это ещё не повод для подражания.

Wednesday, September 23, 2009 5:20 AM by gladchenko

# Как справиться с PAGELATCH при высоко-параллельных INSERT-нагрузках

По материалам статьи: "Resolving PAGELATCH Contention on Highly Concurrent INSERT Workloads".

...

Monday, September 28, 2009 7:44 AM by Russian SQL Server Club

# Трактат о производительности MS CRM. Книга II: настройки базы данных

# re: Как справиться с PAGELATCH при высоко-параллельных INSERT-нагрузках

Хочу подчеркнуть, что в статье приведён довольно экзотический случай. На практике, довольно часто удаётся воспользоваться данной тут вскользь рекомендацией: «…Одним из способов снизить конкуренцию за одну страницу состоит в том, чтобы выбрать в качестве первого столбца индекса другой, не увеличивающийся монотонно столбец…».

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

Tuesday, September 29, 2009 4:52 AM by gladchenko

# Tips for DBA: INSERT Overclocking

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

Tuesday, September 29, 2009 5:48 AM by Alexander Gladchenko

# re: Как справиться с PAGELATCH при высоко-параллельных INSERT-нагрузках

Не такая уж и экзотическая, как раз месяца полтора назад именно это дело и именно таким путём оптимизировал.

Thursday, October 01, 2009 3:35 PM by Oleg Kalinin

# re: Tips for DBA: Быстрое резервирование пакетов планов обслуживания

-- Для SQL Server 2008 системные таблицы нужно выбрать другие:

USE msdb

SELECT 'EXEC [master].[sys].[xp_cmdshell] ''dtutil /Q /SQL ' +

CASE f.foldername WHEN '' THEN '"' + p.[name] + '"' ELSE '"' + f.foldername + '\' + p.[name] + '"' END

+ ' /ENCRYPT FILE;"c:\temp\' + p.[name] + '.dtsx";0 /SOURCESERVER ' + @@SERVERNAME + ''''

FROM msdb.dbo.sysssispackages p

JOIN msdb.dbo.sysssispackagefolders f

ON p.folderid = f.folderid

WHERE p.folderid <> '00000000-0000-0000-0000-000000000000'

GO

Wednesday, October 07, 2009 1:37 AM by gladchenko

# re: Tips for DBA: Быстрое резервирование пакетов планов обслуживания

Если SSIS не установлен, то можно вытащить XML с помощью показанного ниже сценаоия и сохранить каждый пакет в тестовом файле с расширением ".dtsx"

SELECT name

,PlanXML=CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML)

FROM msdb.dbo.sysssispackages

WHERE name NOT IN ( 'SqlTraceCollect','SqlTraceUpload',

'TSQLQueryCollect','TSQLQueryUpload',

'PerfCountersCollect','PerfCountersUpload',

'QueryActivityCollect','QueryActivityUpload'

  )

Wednesday, October 07, 2009 6:47 AM by gladchenko

# Tips for DBA: Замена для стандартного &quot;Back Up Database Task&quot;

Очень часто получается так, что реальные бизнес -требования оказываются сложнее, чем возможности мастеров...

Thursday, October 08, 2009 2:12 AM by Russian SQL Server Club

# re: HDD DEAD?!

А если бы в октябрском серваке тоже был сторедж на 700-900 гигов, соотношение было бы то же?

Tuesday, October 20, 2009 12:11 PM by sorgery

# re: HDD DEAD?!

А как долго от нас уходят и все никак не уйдут FDD накопители.. :)

Думаю HDD будут отходить еще дольше, но самое главное - лед тронулся!

Tuesday, October 20, 2009 1:57 PM by Ilgiz Mamyshev

# re: HDD DEAD?!

а статистики нет по количеству вылетов SAS дисков? или лично увиденного?

Просто тоже обнаружил странную тенденцию , уж очень часто они вылетать стали.

То есть если еще и по количеству вылетов SAS чаще вылетают , то тут становится очевидным что SSD лучше.

Tuesday, October 20, 2009 10:23 PM by cru5ader

# re: HDD DEAD?!

TO sorgery,

Они и так таким числом шпинделей не смогли до результата на SSD дотянуться... т.ч. большое дисковое пространство там только потому, что собраны массивы необходимой производительности, т.е. берут не умением, а числом :)))

Wednesday, October 21, 2009 3:45 AM by gladchenko

# re: HDD DEAD?!

TO cru5ader,

Плохой статистики по количеству вылетов SAS дисков у меня нет, вылетают - но не так чтобы часто...

Wednesday, October 21, 2009 3:46 AM by gladchenko

# re: HDD DEAD?!

А как насчет ограниченности циклов перезаписи SSD-дисков?

При высокой нагрузке исчерпывается очень быстро.

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

SSD работает быстро только вначале, когда количество деградированных ячеек мало, а затем все хуже и хуже.

Так что HDD от нас не уйдут еще долго.

Friday, October 23, 2009 2:46 AM by Alex