Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать версию библиотеки clr скриптами TSQL  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Добрый день.

В редких случаях, при обновлении БД, требуется обновить библиотеку clr, но целесообразно обновлять только в том случае, если версия библиотеки выше.

Я думаю смотреть номер версии неплохой вариант... это возможно?
19 ноя 18, 15:48    [21738258]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Игорь_UUS,

попарсить clr_name в SELECT * FROM sys.assemblies. Может есть и легче способ
19 ноя 18, 15:51    [21738262]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
https://docs.microsoft.com/en-us/sql/t-sql/functions/assemblyproperty-transact-sql?view=sql-server-2017
19 ноя 18, 15:53    [21738269]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
invm
https://docs.microsoft.com/en-us/sql/t-sql/functions/assemblyproperty-transact-sql?view=sql-server-2017


Спасибо!
19 ноя 18, 16:08    [21738286]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Ещё маленький вопрос про clr...

как её грузить с диска понятно, а если clr библиотека сохранена в таблице базы в виде потока данных varbinary(max)... её как то можно вытащить селектом и произвести установку?
19 ноя 18, 16:30    [21738317]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
Игорь_UUS,

https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-assembly-transact-sql?view=sql-server-2017
Пример Б.
19 ноя 18, 16:46    [21738340]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
invm
Игорь_UUS,

https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-assembly-transact-sql?view=sql-server-2017
Пример Б.


хммм... не могу проверить, библиотеку ещё пишу... получается примерно так будет:

CREATE ASSEMBLY HelloWorld  
    FROM (SELECT [data] FROM [test_clr])
WITH PERMISSION_SET = SAFE;  


?
19 ноя 18, 16:58    [21738349]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7763
Игорь_UUS,

Попробуйте вести проект базы для VS + SQL Data Tools. Там все сборки компилируются и устанавливаются автоматически, сам код сборок хранится в C# проектах. Довольно удобно.
19 ноя 18, 17:00    [21738351]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31356
Игорь_UUS
хммм... не могу проверить, библиотеку ещё пишу... получается примерно так будет:
CREATE ASSEMBLY HelloWorld  
    FROM (SELECT [data] FROM [test_clr])
WITH PERMISSION_SET = SAFE;  

?
Думаю, придётся сначала считать в переменную.
Владислав Колосов
Игорь_UUS,

Попробуйте вести проект базы для VS + SQL Data Tools. Там все сборки компилируются и устанавливаются автоматически, сам код сборок хранится в C# проектах. Довольно удобно.
В смысле, мышкой, или там автоматически делается инсталлятор?
19 ноя 18, 23:20    [21738615]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7763
alexeyvg,

В процессе публикации базы сборки компилируются, студия создает и выполняет SQL скрипт вида CREATE ASSEMBLY FROM и сама создает команды для SQL CLR. В общем-то минимум усилий, связанных с публикацией CLR.

Проблема может возникнуть, если требуется опубликовать несколько сборок с разным уровнем безопасности, но это решается при помощи отдельного проекта и ссылки на него.
20 ноя 18, 12:40    [21738964]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31356
Владислав Колосов
alexeyvg,

В процессе публикации базы сборки компилируются, студия создает и выполняет SQL скрипт вида CREATE ASSEMBLY FROM и сама создает команды для SQL CLR. В общем-то минимум усилий, связанных с публикацией CLR.

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

Это неудобно, что пакет должен деплоить сам программист; к тому же, у него же не может быть требуемой версии пакета, он же творит, т.е. он долже взять сорсы из базы, и скомпилить перед деплоем, и где гарантия, что он 5 раз для тестеров это сделает правильно, а 6-й раз на продакшене не ошибётся?

Опять же, админы и тестеры для деплоя должны звать всех программистов, которые когда то делали CLR? или каждый программист долже уметь деплоить то, что годы назад наваяли давно уволившиеся программисты?

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

Хотя намёк ТС на хранение сборок в базе тоже не вывглядит привлекательным :-)
Я бы, например, хранил в сорс-контроле скрипты с CLR в форме литералов, ИМХО это удобнее всего.
20 ноя 18, 21:20    [21739525]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7763
alexeyvg,

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

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

Если это делать самобытно и вручную, что все прелести деплоя сборок и кода Вы уже описали. Кому-то доступа нет, кто-то не ту DLL скопировал и т.п.
21 ноя 18, 13:34    [21740008]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31356
Владислав Колосов
В частности, версия для размещения может поставляется в группу развертывания и экспуатации файлом, который обрабатывается процессором SQLCMD с указанием значений переменных проекта в зависимости от сервера развертывания.
А, то есть студия может сделать самодостаточный, для создания CLR, файл, в котором "будет всё"? И этот файл нужно просто выполнять (в виндах или в сиквеле. неважно)?
21 ноя 18, 18:17    [21740463]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1368
alexeyvg,

студия может создать выходной файл который необходимо пролить через sqlcmd без необходимости что то дополнительно компилировать или держать на руках "сорцы".
21 ноя 18, 21:16    [21740591]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать версию библиотеки clr скриптами TSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31356
felix_ff
alexeyvg,

студия может создать выходной файл который необходимо пролить через sqlcmd без необходимости что то дополнительно компилировать или держать на руках "сорцы".
Спасибо, да, посмотрел, там создаётся скрипт с литералом, очень удобно для:
alexeyvg
Я бы, например, хранил в сорс-контроле скрипты с CLR в форме литералов, ИМХО это удобнее всего.
22 ноя 18, 19:42    [21742003]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить