пятница, 12 апреля 2013 г.

Запоздалая подборка постов по SQL Server

1. So you think you’re a SQL MCM. Test Yourself Part I (Part II, Part III, Part IV)- Bob Duffy предлагает проверить себя - настолько ли хорошо вы знаете SQL Server, насколько хорошо его должен знать SQL Server Master.

2. Moving A Database to New Storage With No Downtime - Bob Pusateri рассказывает о том как можно перенести БД на другой сервер с минимальным временем простоя.

3. Administering SQL Server 2012 running on Windows Server Core - Thomas LaRock об администрировании SQL Server 2012, установленного на Windows Server Core.

4. Filegroups and Non-Clustered Indexes - Rob Farley отвечает на вопрос - в какой файловой группе будет создан некластерный индекс, если файловая группа не указана явно.

5. Log Shipping FAQ - небольшой FAQ по доставке журналов от Jes Schultz Borland.

6. Managing the SQL Server Transaction Log: Dealing with Explosive Log Growth - Tony Davis и Shawn McGehee о причинах и методах решения проблем с растущим журналом транзакций.

7. Forum Etiquette: How to post data/code on a forum to get the best help - Jeff Moden приводит рекомендации относительного того, как правильно оформлять свои вопросы по SQL Server на форумах.

8. Execution Plans in Azure SQL Database - пост Grant Fritchey о планах выполнения в Azure.

9. SQL Server's Auto Update Statistics Async option - Tibor Nagy рассказывает о том, как работает Auto Update Statistics Async и когда эту настройку лучше не использовать.

10. Day 31 of 31 Days of Disaster Recovery: Backup and Restore of the Resource Database - заключительная часть серии постов о Disaster Recovery от Robert Davis, в которой он рассказывает о том как сделать резервную копию (и восстановить её) сердца SQL Server - ResourceDB.

11. Upgrading to SQL 2012: Ten Things You Don't Want To Miss - на что обязательно следует обратить внимание при переходе на SQL Server 2012 от Thomas LaRock.

12. DBCC CHECKDB Execution Memory Grants – Not Quite What You Expect - Jonathan Kehayias показывает, что поведение DBCC CHECKDB отличается от ожидаемого, если не может получить столько памяти, сколько хочет.

13. What is the Difference Between Physical Sockets, Physical Cores, and Logical Cores? - Microsoft, с выходом SQL Server 2012, поменяла модель лицензирования - Glenn Berry описывает как понять за что теперь нужно платить.

14. [Video] Bad SQL Server Advice for DBAs - традиционное 30-минутное видео от Brent Ozar. На этот раз о "плохих советах" для DBA.

15. Managing SQL Server Statistics - что такое статистика, как её использует SQL Server и как с ней правильно работать - в посте Erin Stellato.

16. Partitioning in SQL Server: Managing Sliding Window Scenario - Arshad Ali о секционировании в SQL Server

Ну и ещё несколько постов и ссылок не первой свежести, но не менее интересных:

1. CHECKDB (Part 6): Consistency checking options for a VLDB - что делать, если время выполнения DBCC CHECKDB превышает время вашего окна для обслуживания БД от Paul Randal.

2. Две главы из книги Kalen Delaney, S. Agarwal, C. Freedman, A. Machanic, R. Talmage "Inside Microsoft® SQL Server™ 2005: Query Tuning and Optimization" в свободном доступе на MSDN.

3. DMVs for Query Plan Metadata - Louis Davidson и Tim Ford рассказывают о DMV, с помощью которых можно совершить "deep dive" в планы выполнения.

четверг, 11 апреля 2013 г.

Посмотрел сегодня одну из видеозаписей акций "стопхама". Вообще, у меня неоднозначное отношение к этим ребятам, но сейчас не об этом. В видео не было ни драк, ни особой ругани, народ как-то относительно спокойно разъезжался, когда им говорили, что они криво стоят. Но вот один паренёк, перед тем как срулить, сказал нечто вроде: "Вы вообще молодцы! Я вас вообще всегда поддерживаю, просто вот девушка...".
И вот думаю я про него - ведь ты же всё понимаешь - понимаешь, что стоишь как мудак, что мешаешь людям - так что же ты, сука, делаешь? Почему так?
Мы с детства знаем, что все правила всегда надо соблюдать. Ну то есть почти всегда. И почти все. Кроме тех, выполнение которых осложнит нам жизнь хотя бы на самую малость... Вот весь этот наш житейский эгоизм приводит к таким проблемам. Тот же самый стопхам - сколько у них было конфликтов? Сотни, а может быть и тысячи. То есть, как минимум у сотни человек (а так же  членов их семей, скорее всего) возникли проблемы из-за желания сэкономить две минуты на поиск свободного места на парковке и пять минут на прогулку от этой парковки до нужного места. А ещё тысячи людей в это время, стояли в пробке, возникшей, отчасти, из-за этих товарищей.
Грустно. И глупо.

среда, 10 апреля 2013 г.

alter database rebuild log

Обнаружил на тестовом сервере БД, недоступную пользователями. Когда на этом сервере умер жёсткий диск, большую часть баз я перенёс, какие-то просто убил за ненадобностью, а про эту, получается, просто забыл.
Проблема с этой БД была в том, что раньше у неё журнал транзакций лежал на диске E, теперь такого диска на этом сервере не было в принципе, а журнал транзакций располагался по тому же пути, но на диске D.
С помощью ALTER DATABASE hd_ts MODIFY FILE (name = 'hd_ts', filename = 'D:\bases\hd_ts_log.ldf') я показал, что журнал транзакций теперь живёт в другом месте. Файл этот, к сожалению был повреждён и база данных упала в SUSPECT.
Я выполнил ALTER DATABASE hd_ts SET EMERGENCY и SET SINGLE_USER, после чего с hd_ts появилась возможность делать хоть что-то. Выполнив DBCC CHECKDB ('hd_ts') WITH NO_INFOMSGS, я увидел, что ошибок не обнаружено, но при попытке сделать ALTER DATABASE hd_ts SET ONLINE, БД снова упала в suspect.
Тут я сделал глупость и удалил сам файл журнала транзакций, после чего ни о каком EMERGENCY речь уже не шла. Почитав форумы, я понял, что DBCC CHECKDB ('hd_ts', REPAIR_ALLOW_DATA_LOSS), скорее всего спасло бы меня. Но, что делать сейчас, было непонятно.
Сделать DETACH БД SQL Server не давал, а останавливать сервер на котором крутится десяток других тестовых баз ради того чтобы спасти никому ненужную БД, было бы не логично. В принципе, если бы я мог остановить сервер - потом можно было бы сделать CREATE DATABASE FOR ATTACH_REBUILD_LOG, либо attach_single_file_db и проблема была бы решена. И вот, наткнулся на такую "недокументированную" возможность ALTER DATABASE:
ALTER DATABASE hd_ts REBUILD LOG ON (name = 'hd_ts_log', filename = 'd:\bases\hd_ts_log.ldf'). Вуаля, база жива.

вторник, 2 апреля 2013 г.

Планы

Две недели уже не делал подборку постов по SQL Server'у - их есть у меня, но не очень много. Думаю, что в пятницу сделаю - сразу за три недели.
Сейчас занят тем, что учусь писать на C#. Хочу стать хотя бы junior'ом - такие вакансии периодически попадаются. Мечты оставаться и развиваться как dba, похоже, так и останутся мечтами. На заводе мне двигаться дальше уже некуда, а вообще таких вакансий по Омску я видел ровно одну. Завёл себе "pet project", как все советуют и пытаюсь его запилить. Никому кроме меня он, я так полагаю, не нужен, а мне, в общем-то пригодится.
Жизнь идёт.