— Господа, вы как-то невнимательно читаете. Вопрос не в том, знаю я или нет, как это победить. Я понимаю, что искушение показать себя умным и дать очередную порцию рекомендаций велико, но всё-таки: вопрос в том, что установка %SQLServer% с умолчательными параметрами даёт возможность положить сервер под Виндой. Чтобы этого избежать, всего-то нужно отказаться от умолчательного пароля под виндой, как это уже сделано под многими линуксами. Но все обсуждения стартуют одинаково: «Настрой конфигурационный файл, права доступа…»
— Тебе уже сказали, что не стоит оно того. Под виндой слишком много идиотов, а у проекта нет сотен индусов на техподдержке, чтобы отвечать на вопросы, где взять пароль на DBA.
Великая смена логинов для реализации контекстов безопасности — кто сталкивался с со сменой руководства в крупных компаниях, поймёт. Я, админ БД, и наш сисадмин (парень очень умный и учёный — только список его MS-сертификатов длиннее всего моего резюме за семь лет) выставляем новые логины. Попытки сделать это по виндостандарту заняли уже больше часа, а служба MSSQLServer всё продолжает сообщать нам, что мы отчаянно неправы. В какой-то момент времени до меня доходит идея сделать всё образом, не предусмотренным инструкциями.
— Есть предложение сделать невиндовую аутентификацию, перезавести логин на обоих серверах, дать права db_owner на рабочих базах и право securityadmin. — Странно… По всем правилам и так должно работать. — Почему странно? Всё через жопу, так что правильность решения сомнений не вызывает!
Через несколько минут:
— Заработало!
Если путь сообщения виндовых приложений вам кажется слишком вычурным и наполненным излишними деталями, знайте — он верный!
Писал конвертер на Java из файлов MDB в SQLite. Понадобилась библиотека на чистой Java, то есть не привязанная к какой-либо платформе.
Интернет большой — библиотеку я нашёл. Правда, она была в разработке, поэтому не всё ещё работало должным образом. В частности, в описании было сказано, что не реализована работа с запароленными базами, поэтому пока с такими базами можно работать, как с обычными базами без пароля.
Однажды пришлось восстанавливать кучу мускуловских баз из бэкапа. Зная, что в базах данные не менялись (бэкап был очень свежим), восстанавливаю всё. Через 15 минут к программисту подходит диспетчер: «Мы в программу войти не можем». Первая мысль — проблема с MySQL. Захожу на сайт (базы которого я тоже восстановил из бэкапа) — всё работает без нареканий. Несколько других проектов тоже в порядке. Стандартная рекомендация: «Перезагрузитесь».
Ещё через 15 минут пришлось всё-таки запускать phpMyAdmin. С первого взгляда угадывается кодировка UTF-8. Часть баз имеет в параметрах странный для них charset — cp1251_bin. С ними-то и происходила фигня при резервировании. Другие же базы, вышедшие из-под пера нашего программера, были в cp1251_general_cs, и с ними проблем не было. Когда подошёл узнать, с какой целью программер использовал двоичное представление, ответ меня убил:
— Я вообще не в курсе, в чём разница. А то, что в конце с CS, я иногда пишу просто потому, что мне Counter-Strike нравится.
Видимо, есть у него индусские корни, и бог Ганеша иногда помогает найти правильное решение, но маскирует его под странные ассоциации.
Дело было в далёком 2004 году. Работал я в одном из подразделений нашего родного Министерства энергетики, сидел админом в библиотеке. Работа была непыльная; на вопросы и просьбы вида «А нам нужно, чтобы скорость базы была повыше» в сороковой раз я лениво отвечал: «А вы мне оплатите стомегабитный 24-портовый свитч». Кстати, 30 компьютеров соединялись с сервером через каскад из пяти восьмипортовых десятимегабитных хабов. Пассивных.
День «Х»: закупка оборудования по программе «Электронная Россия» миллиона этак на четыре. Счастье админа! Наш интегратор всё это привёз, а вот когда пришёл черёд это хотя бы собрать, начались заминки: «Ну, нам откат-то за закупку был, а за установку и наладку отдельно…» Начальство бежит ко мне (а я и админ, и наладчик, и эникейщик в одном лице) с вопросом: «А ты сможешь?» Я с тоской и радостью смотрю на три интеловских сервера, аппаратный файрвол, циску, 3Сom-свитчи (разношёрстное прибыло хозяйство) и обещаю подумать. Шеф ласково спрашивает, сколько мне дать премии, чтобы думалось лучше. Я нагло (при окладе в пять тысяч) отвечаю: «Пятьдесят и помощника». Шеф, не моргнув глазом, соглашается и обещает вдобавок пиццу и кофе. Я начинаю думать, что продешевил. Щедрость была объяснима: дали месяц, чтобы со всем этим хозяйством разобраться!
Ладно, начали. Собрал шкаф, договорился с провайдером о протяжке сетей, одна незадача: электрики вечером уже пьяные, а утром ещё пьяные. Надо тянуть самому.
Приводят мне помощницу. Для экономии средств выделили очаровательное создание из института культуры, проходящее практику, себе на беду. Создание превосходно знало особенности национальной культуры Китая эпохи Цинь, но с проблемой протяжки СКС и разводки силовых линий от подстанции, видимо, столкнулось впервые. Впрочем, Китай тоже пошёл на пользу: весёлыми декабрьскими ночами замечательно разбавлял мануалы по Сisco PIX вперемешку с пиццей, кофе и коньяком (спасибо шефу). Не буду заострять внимание на том, как мы вдвоём радостно лазили по кабельным каналам здания министерства, но, думаю, свою месячную практику девушка запомнит на всю жизнь.
26 декабря. Пробный пуск. Настроено уже почти всё: веб-сервер с библиотекой оттестирован и смотрит из DMZ, второй выполняет роль сервера приложений, а так нагрузка небольшая, то заодно и шлюза доступа в инет. Третий настроен под базу. Вот тут и загвоздка: старый «сервер БД» работал под Win2000. База написана на заказ на Visual FoxPro. Платить за переделку базы на SQL у начальства не было ни сил, ни спецов, ни желания, ни денег, да уж очень много на эту базу было завязано. Всё пошло! Политики AD встали, как родные, сайт зашуршал, почта заработала, инет заинтернетил.
27-е. Сеть лежит. Начальство, мягко говоря, в непонятках. Ищут виноватого. Я отбрыкиваюсь: месяц ещё не прошел.
28-е. Тестируем сеть. Всё как швейцарские часы.
29-е. Замечаем прикол: один человек в базе — всё хорошо; два — хватает на полчаса; три — до первой транзакции.
30-е. Ловим разработчика БД, наматывая ему… Короче, начальство это умеет.
31-е. Перепроверено всё. Программист БД говорит: «Какие на фиг транзакции? БД файловая, тупая до безобразия, работает через флажки приоритета, доступ к файлам идёт только по путям сетевого окружения NetBIOS!»
1 января. Сидим втроём. Пиво, водка, коньяк от шефа, пицца и пельмени. Пицца подается на верёвочке на второй этаж: охрана опечатала здание и свалила.
3-е. Звоним в представительство техподдержки MS, пытаемся понять, каким образом идёт взаимодействие по протоколу SMB в старых и новых версиях Windows, а главное, почему это сказывается на доступе многих пользователей к файлу?
5-е. Нашёлся (протрезвел?) толковый человек, который сказал, что MS свой проект FoxPro закрыло на уровне поддержки Win98, и вообще чудо, что у нас всё это работало даже на Win2000.
До десятого пьём, так как выхода не видим. Сервер на Win98? Нас не поймут: на улице 2005-й, в серверной — лицензионный 2003-й.
11-е. За два дня до рабочей недели появилась мысль: «А давайте попробуем линукс!» В библиотеке найдена первая попавшаяся книга с диском (Fedora Core, если не ошибаюсь). По мануалу (первый раз в жизни линукс трогали!) поставили SMB-сервер, состыковали его с доменом и запустили. Оказывается, линуксоиды корректно реализовали SMB, и всё пошло на ура.
Так я впервые усомнился в непререкаемом авторитете MS в области серверных технологий, познакомился с хорошей девушкой и линуксом, а попутно оригинально встретил Новый год.
«F» и «D» — клавиши, стоящие рядышком на клавиатуре. Когда при построении MySQL-запроса с моей лёгкой руки форматирование даты (DATE_FORMAT) превратилось в управление судьбой (FATE_FORMAT), я ещё раз убедился: у программистов синдром Бога.
Обновляю с утра пораньше нашу банковскую программу. В девять захожу к контролёрам узнать, все ли нормально работает.
— Всё хорошо, только птичку жалко... — вздыхают они. — Какую ещё птичку?
Оказалось, раньше в трее висел монитор прихода через клиент-банк платёжек. До обновления он обращался к MSSQL-серверу банка на предмет необработанных документов. После обновления SQL-сервер заменили на Oracle, а программу мониторинга никто не переписал. Иконку в трее, похожую на букву «V», контролёры прозвали птичкой — так старая фраза обрела новый смысл.
Угораздило меня сегодня на работе проверить, как вчера две молодых специалистки выполнили задание по копированию БД. Очень уж творчески подошли девчонки к задаче: открыли БД, нажали кнопочку Print Screen, а затем вставили рисунок в Ворд и гордо назвали документ «Копия базы данных». Пятёрка за старание, но интересно, как такой бэкап нам поможет в экстренной ситуации?