Самый старый код в MSSQL

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Ваш покорный слуга работал с MSSQL с версии 6.5, но в качестве экзотики застал версии 6.0 и 4.2. Да, я супер стар!

Но осталось ли в MS SQL что-либо с тех времен?

Кодовая база

Динозавры от IT, вероятно, помнят, что MS SQL - это форк Sybase, случившийся в 1993 году. Версии Sybase 4.2 и MSSQL 4.2 были, как я понимаю, полностью совместимыми. Более того, так как MSSQL опережала Sybase с развитием GUI, то Management Studio от MSSQL использовали для Sybase.

Дальше кодовая база стала отличаться, но совместимость сохранялась, по моему, до версии 6.5. Внешне Management Studio тогда сильно отличался от современного. Например, вы создавали database devices, и располагали на них базу или разные базы. То есть один файл мог относиться к разным базам.

Глобальный редизайн продукт претерпел в 1998 году с выходом версии 7.0, которая уже примерно выглядела так, как выглядит сейчас. Однако в кодовой базе было еще много кода, доставшегося от Sybase в наследство, и только в версии 2005 наконец весь код был переписан.

Я слышал, что в Microsoft был даже неформальный праздник по поводу выкидывания последней строчки Sybase. На пути к этому этапу им часто приходилось решать проблемы: в коде Sybase найден баг. Исправлять и кто-то использует такое поведение?

Таким образом, весь код MSSQL сейчас не старше 1998 года - версии 7.0. Но...

Преданья старины глубокой

Но в MS SQL есть активно используемые технические решения, которые ведут свое происхождение из начала 90х!

Вы наверняка знаете, о чем я:

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

select 
  dateadd(ss,runtimeh*3600+runtimem*60+runtimes,convert(datetime,convert(varchar,run_date))) as rundate,
  runtimeh*3600+runtimem*60+runtimes as runtime_seconds,
  durh*3600+durm*60+durs as duration_seconds
from (
select top 10 
  run_time/10000 as runtimeh, run_time/100%100 as runtimem, run_time%100 as runtimes, 
  run_duration/10000 as durh, run_duration/100%100 as durm, run_duration%100 as durs,
  run_date
  from msdb..sysjobhistory) Q

Или воспользоваться недокументированной функцией agent_datetime:

https://blog.sqlauthority.com/2015/03/13/sql-server-interesting-function-agent_datetime/

Код выше уродлив, но работать будет быстрее, чем функция.

Почему же так вышло?

SQL agent уже существовал в версии 4.2. Соответственно, это извращение было сделано в Sybase. Почему? Скорее всего потому, что типы date и time появились много позже, вначале же существовал datetime, который не совсем подходит для этой задачи (например, расписание часто содержит время без даты).

Не думаю, что это когда-либо исправят. Но если бы появились view в msdb где видны нормальные значения, то это было бы здорово.

Ну и, как сейчас принято на Хабр, подписывайтесь на мой телеграмм канал. Хотя... черт, у меня нет никакого телеграмм канала...

Источник: https://habr.com/ru/articles/788988/


Интересные статьи

Интересные статьи

Многие предприниматели верят, что как только они увеличат маркетинговый бюджет – бизнес взлетит. Нужно лишь найти «связку» – и миллионы посыпятся на голову. Вы наверняка и сами много раз пытались выра...
Ачивка «Терминатор»: прибить проект, потому что проще заново У нас есть внутренний продукт для оценки сотрудников. Он сменил три проджекта, три тимлида разработки, двух дизайнеров. Я была третьим...
Найдутся ли среди новых методов конкуренты старому доброму SIFT?
Я часто задумывался над тем что наши идеи, периодически озаряющие нашу бытность, на самом деле нашими не являются. А витают в воздухе, иногда спускаясь в наш мир через узкий тоннель 8 битного сознан...
На этой неделе сценарист фильма «Дюна» Дени Вильнёв рассказал, что писал сценарий в программе Movie Master на MS-DOS — так как не любит перемен. И пока такие энтузиасты используют старое программное о...