|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые разработчики SQL! Позвольте представить Вашему вниманию самодельную легковесную технологию, именуемую как SQL-файл (или же SQL в файлах), — для MSSQL и T-SQL. Данная методика успешно применялась в течение достаточно долгого периода для программирования БД расчёта квартирной платы (город Воронеж). Технология базируются на известной утилите SQLCMD и командном процессоре CMD. В качестве IDE (командный пульт SQL + оперативный редактор) эффективно применяется Far Manager 3 , со вспомогательными простейшим плагином и макросами. (Также, возможно задействование других редакторов SQL, помимо встроенного в FAR.) Идея состоит в том, чтобы поддерживать исходный код и/или вспомогательные скрипты в виде SQL-файлов в директориях, транслируя их в базу данных, по отдельности либо группами. Используя утилиту $SQLTRANS и соответствующие шаблоны, можно настроить трансляцию (генерацию) большого количества объектов БД, работающую, так сказать, на раз-два-три. За один приём, например, возможно обновить активную составляющую программы в базе (процедуры, функции, представления, …), или, скажем, создать табличную структуру (и наполнить её некоторым количеством необходимых данных). При умелом обращении подсистема (активные объекты) может вполне свободно корректироваться даже на работающей программе/службе. Обзорное минимальное описание SQL-файл доступно на страницах Handicraft-CODE (англ. язык): https://handicraft.remelias.ru/sdk/sql_file.html (Handicraft-CODE :: Handicraft-SDK :: SQL-file technology); https://handicraft.remelias.ru/sdk/sql_tools.html (Handicraft-CODE :: Handicraft-SDK :: CMD-utilities :: SQL-tools). А также, см. скриншот-ы: https://handicraft.remelias.ru/sdk/sql/screenshots_1.html https://handicraft.remelias.ru/sdk/sql/screenshots_2.html https://handicraft.remelias.ru/sdk/sql/screenshots_3.html Вместе с командными утилитами и шаблонами предлагается возможное (опционально) использование так называемого Усиленного Transact-SQL , с препроцессором (на базе переменных среды), представленного множеством соответствующих импорт-определений и широким набором хелпер-объектов прилагаемой библиотеки SQLAUX (полезные программатики ). Помимо краткого обзорного описания и многочисленных скриншот-ов, на страницах доступны соответствующие загрузки 7-Zip: 1) Handicraft Toolkit — объединяющий пакет; 2) Handicraft-SDK — ремесленный SDK; 3) BookRegistry app. — Client-Server.WEB (идея); 4) TEST (DB) — копия БД. Страницы с загрузками (технология SQL-файл, а также связанное с БД): https://handicraft.remelias.ru/sdk/handicraft_sdk.html (Handicraft-SDK); https://handicraft.remelias.ru/csweb/client_server_web.html (Client-Server.WEB); https://handicraft.remelias.ru/handicraft_code.html (Handicraft-CODE). Домен https://handicraft.remelias.ru (Handicraft-CODE), кроме технологии SQL-файл, содержит также разнообразные экспериментальные примеры программирования (.NET, .Win32, WASM и др.). Спасибо за внимание! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 12:56 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Сергей Китаев Идея состоит в том, чтобы поддерживать исходный код и/или вспомогательные скрипты в виде SQL-файлов в директориях, транслируя их в базу данных flyway/liquibase/etc. чем не подошли? Для них даже не надо создавать десятки переменных среды, хватит и меньшего количества. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 13:20 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Ценность этого продукта для потребителя сомнительна, ввиду вполне удобной для разработчика бесплатной MS Visual Studio Community и поддержки оной того же GIT. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 13:39 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Это (насчёт ценности) — смотря как смотреть. Если исходить из того, что всё, что не в Visual Studio — это не ценно, тогда так как Вы говорите. Ежели под ценностью понимать независимость от Visual Studio (и когда не очень-таки радует SSMS везде-везде), тогда другое дело. Данная реализация SQL-файл достаточно простая (современные вещи, конечно же должны делаться, что-называется, по-взрослому). Ценность, однако, представляет больше идея, которую можно по-разному исполнить. Моё личное применение SQL-файл — вполне эффективно. Библиотека SQLAUX, например, содержащая более 150 объектов (Х.П., функции и пр.) компилируется (уничтожается-создаётся в БД) за считанные секунды. Разнообразное хозяйственное/испытательное/отладочное занятие в БД (правка объектов, включая таблицы, индексы, ключи) — вполне-таки приемлемо, а также позволяет повторить потом подобные действия (когда всё сохраняется в файлах). Насчёт же презентабельной реализации продукта, это всегда хорошо. SQL-файл (как он есть) может оказаться полезным лишь для некоторого потребителя, недовольного предлагаемыми возможностями, поведением и особенностями работы в Visual Studio и SSMS. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 14:41 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Здравствуйте, Владислав! Это (насчёт ценности) — смотря как смотреть. Майкрософт SQL-Server Management Studio а также Visual Studio конечно же позволяют делать очень разнообразные вещи. Однако, мне не думается, что они столь же пригодны в том смысле, для чего предназначена SQL-файл. Продолжение ответа смотрите далее, в следующем ответе форума: “Re: Технология SQL-файл (для MSSQL)” (Сергей Китаев, 15 декабря 2020 г. в 14:41). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:12 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Сергей Китаев Добрый день, уважаемые разработчики SQL! Спасибо за внимание! В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям[4] язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI (American National Standards Institute), официальным произношением стало [,es kju:' el] — эс-кью-эл. Несмотря на это, англоязычные специалисты зачастую продолжают читать SQL как сиквел (по-русски часто говорят «эс-ку-эль»). Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования[5]. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:13 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Сергей Китаев, 7) Cyrillic code collection (in Russian) named SQL_RU Плагиат! Так и не смог осознать ценности данного продукта и области его применения. Для контроля исходников гит + флайвей перекрывают по функционалу полностью. Механизм редактирования сильно уступает SSMS, как минимум в части inellisense, просмотре планов и прочим прелестям live query. Насколько удобно для работы с query store, extended events и прочими подобными фишками - тоже не понял. Просто набор скриптов с дополнительной обвязкой? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:37 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Владислав Колосов, у VS есть ряд существенных недостатков 1. Поддержка новой функциональности MS SQL Server в SSDT появляется с существенной задержкой. 2. Поддержка гетерогенных сред рудиментарна (например, попробуйте опубликовать из VS гетерогенный проект для MS SQL + PostgreSQL). 3. Поддержка других платформ оставляет желать лучшего. Удовольствие от запуска виртуалки для VS, если и MS SQL Server, и вся среда разработки на Linux - ниже среднего. Другое дело, что аналогичную задачу я давно успешно решаю при помощи GNU make и C препроцессора. Первый управляет сборкой и публикацией, а второй "собирает" файлы проекта по директориям, предоставляя заодно возможности макроопределений. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:44 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Сергей Китаев, Пробовали вы вести разработку в VS SSDT? Какие ключевые преимущества (и недостатки) у вашей "технологии SQL-файл" по сравнению с SSDT? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:46 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
ptr128 Владислав Колосов, у VS есть ряд существенных недостатков 1. Поддержка новой функциональности MS SQL Server в SSDT появляется с существенной задержкой. 2. Поддержка гетерогенных сред рудиментарна (например, попробуйте опубликовать из VS гетерогенный проект для MS SQL + PostgreSQL). 3. Поддержка других платформ оставляет желать лучшего. Удовольствие от запуска виртуалки для VS, если и MS SQL Server, и вся среда разработки на Linux - ниже среднего. Другое дело, что аналогичную задачу я давно успешно решаю при помощи GNU make и C препроцессора. Первый управляет сборкой и публикацией, а второй "собирает" файлы проекта по директориям, предоставляя заодно возможности макроопределений. Какой из перечисленный вами недостатков решает вышеописанная "технология"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:48 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
msLex ptr128 1. Поддержка новой функциональности MS SQL Server в SSDT появляется с существенной задержкой. Какой из перечисленный вами недостатков решает вышеописанная "технология"? Пункт 1. ptr128 аналогичную задачу я давно успешно решаю при помощи GNU make и C препроцессора А это решает все три. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:52 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
ptr128 msLex пропущено... Какой из перечисленный вами недостатков решает вышеописанная "технология"? Пункт 1 Т.е. поддержка новых фичей SQL Server в этой тулзе происходит раньше? Можно пару примеров? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:54 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
msLex, К моменту выхода MS SQL 2016 VS 2017 еще не было. А с VS 2016 получили следующие проблемы: 1. Создать native compiled функции возможности не было. 2. При наличии в БД хотя бы одного разрешения GRANT EXECUTE ANY EXTERNAL SCRIPT TO ... публикация из VS висла наглухо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:01 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
ptr128 msLex, К моменту выхода MS SQL 2016 VS 2017 еще не было. А с VS 2016 получили следующие проблемы: 1. Создать native compiled функции возможности не было. 2. При наличии в БД хотя бы одного разрешения GRANT EXECUTE ANY EXTERNAL SCRIPT TO ... публикация из VS висла наглухо. А в этой утилите поддержка уже была? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:02 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
msLex, она слишком тупа, чтобы такое анализировать. Какой код ей скормили - тот и деплоит, без излишнего publish preview, как в VS ) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:04 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
ptr128 msLex, она слишком тупа, чтобы такое анализировать. Какой код ей скормили - тот и деплоит, без излишнего publish preview, как в VS ) В SSDT так же можно деплоить часть кода без анализа через pre/postdeploy sctipts ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:09 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
msLex, прошу прощения, Вы предлагаете деплоить без publish preview ВЕСЬ код? Расскажите подробней, пожалуйста, как это сделать в SSDT, если проект уже есть и там сотни объектов без всяческих IF EXISTS, ALTER и т.п. ptr128 При наличии в БД хотя бы одного разрешения GRANT EXECUTE ANY EXTERNAL SCRIPT TO ... публикация из VS висла наглухо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:13 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
ptr128 msLex, прошу прощения, Вы предлагаете деплоить без publish preview ВЕСЬ код? Расскажите подробней, пожалуйста, как это сделать в SSDT, если проект уже есть и там сотни объектов без всяческих IF EXISTS, ALTER и т.п. ptr128 При наличии в БД хотя бы одного разрешения GRANT EXECUTE ANY EXTERNAL SCRIPT TO ... публикация из VS висла наглухо. С учетом того, что в этой тулзе так и сделано, то переход на нее по трудозатрам ни чуть не меньше чем (а скорее всего и больше) такого же подхода в SSDT. Это если сравнивать эту тулзу с SSDT. PS Если что, мы так не делаем, а деплоим именно через deploy. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:34 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
env, Здравствуйте! Вам не понравилось наличие сокращений SQL и RU в наименовании старинного архива: “ HandicraftSDK\Old-Legacy\SQL_RU (sample collection).7z ”? Там нет плагиата, от слова вообще. Архив содержит примеры SQL-файл в ту пору, когда она была исполнена на кириллице (как “*.sql” так и “*.cmd”), причём довольно специфические вещи. Библиотека РуХелперы.SQL , например, это кириллический предшественник SQLAUX. Неудобно было применять для папки громоздкое но понятное англоязычное SQL_Cyrillic_Russian или подобное (кириллица ведь разная бывает). SQL-файл (в ее текущем исполнении) не всем должна нравиться, поскольку некоторые привычные вещи становятся, к сожалению, недоступными. Возможно и существуют какие-то великолепные инструменты, способные оперативно и качественно исполнять скрипты из файлов, как выборочно, так и группами, — Вам видней. Far Manager, вообще-то, тоже довольно неплохая вещь, когда требуется запускать различные build-ы, подправлять всякие там сценарии и т. п. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:35 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
msLex, Вы прикалываетесь? Я подобный переход на make + С препроцессор сделал меньше, чем за час. Правда с учетом того, что сам toolchain и все необходимые макросы для обертки объектов у меня уже были. А вот "такой же подход в SSDT" подразумевает уже перенос всего кода в PosDeployment, что и за день не сделаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:42 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
ptr128 msLex, Вы прикалываетесь? Я подобный переход на make + С препроцессор сделал меньше, чем за час. Правда с учетом того, что сам toolchain и все необходимые макросы для обертки объектов у меня уже были. А вот "такой же подход в SSDT" подразумевает уже перенос всего кода в PosDeployment, что и за день не сделаешь. не нужно переносить в PosDeployment весь код, он поддерживает ссылки на файлы вида :r sqlscript.sql которые так же могут содержать подобные ссылки. т.е. в идеале, postdeployment script может содержать что-то вроде :r base_version.sql :r version1_diff.sql :r version2_diff.sql Начальная версия скриптов будет отличаться от SSDT только массовой заменой create ... на if object_id is null create ... . Но разговор все же не об этом, а о "Технология SQL-файл", там то что есть для работы с БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:54 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
Сергей Китаев, Там ещё смайлик был, чтобы показать, что фраза про плагиат - шутка. Выборочное выполнение скриптов обычно не настолько интересно, как накатить изменения на разные контуры без потерь и с учётом их порядка применения. Для этого и существуют такие инструменты как liquibase/flyway в связке с системами контроля версий. Возможно, инструмент удобен для администрирования, но тогда вопрос по функционалу - что он покрывает? Какие сценарии, какие операции? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 16:58 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
msLex, я в курсе, что можно использовать множество файлов. А вот утверждая, что можно обойтись только массовой заменой CREATE, Вы глубоко заблуждаетесь. Потому что метаданные могут меняться. Причем могут не только добавляться поля таблицы, но так же меняться CONSTRAINT-ы, что для предлагаемого Вами подхода вообще печально. После чего Вы становитесь вынужденными или руками прописывать все эти IF ... DROP/ALTER/CREATE, или все же взвоете и станете использовать подсистему сборки отличную от SSDT, в которой подобные процессы более-менее автоматизированы. Что будет логичным, так как толку от SSDT, когда весь код деплоится через PostDeployment - НИКАКОГО. Берете в зубы Atom и радуетесь после убогого VS ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 17:05 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
ptr128 А вот утверждая, что можно обойтись только массовой заменой CREATE, Вы глубоко заблуждаетесь Если вы прочитаете внимательно, то увидите, что я говорил а начальном преобразовании нормального SSDT проекта в "PostDeployment-проект", дальнейшие изменения структуры конечно нужно будет дописывать alter скриптами. Так же, надо полагать, работает "технология" ТС-а Выше же я говорил, что мы так не делаем, а пользуемся deploy. Неразрешимых проблем у нас при этом не возникало. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 17:18 |
|
Технология SQL-файл (для MSSQL)
|
|||
---|---|---|---|
#18+
[quot msLex#22248438] ptr128 Выше же я говорил, что мы так не делаем, а пользуемся deploy. Неразрешимых проблем у нас при этом не возникало. Вот и расскажите всем, как надо было решать проблему, когда deploy SSDT 2016 глухо виснет при наличии хотя бы одного GRANT EXECUTE ANY EXTERNAL SCRIPT в целевой БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 17:24 |
|
|
start [/forum/topic.php?fid=46&msg=40028073&tid=1684330]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
126ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 264ms |
total: | 512ms |
0 / 0 |