Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Alter function / 19 сообщений из 19, страница 1 из 1
30.08.2019, 14:29
    #39855672
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
Пересоздавал объекты скриптом вот так:
Код: sql
1.
2.
3.
4.
5.
6.
if object_id('xxxxx') is null
exec('create function xxxx returns integer as begin return 0 end')
GO

ALTER FUNCTION [dbo].[xxxxx]
.....

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

create function ххххх returns table as return(select id=0)

Мож кому пригодится.

Почему именно такой способ создания/обновления объектов ?
Он самый оптимальный, ИМХО. Лучше, чем Дроп + криейт.

зы: мсскл2008.
...
Рейтинг: 0 / 0
30.08.2019, 14:58
    #39855694
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
авторПочему именно такой способ создания/обновления объектов ?
Он самый оптимальный, ИМХО. Лучше, чем Дроп + криейт.


и почему так имхуется?
Иногда дроп+креате лучше.
...
Рейтинг: 0 / 0
30.08.2019, 15:05
    #39855699
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
L_argoНо обнаружил, что для табличных ф-ций альтер фейлится, т.е. нельзя альтером поменять тип ф-ции со скалярного в табличный.
а почему вам надо менять тип функции со скалярного в табличный при помощи alter?
они хоть и называются все "функции", но это три отдельных типа объектов: скалярные, табличные инлайн, табличные многострочные
...
Рейтинг: 0 / 0
30.08.2019, 15:07
    #39855701
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
ShakillL_argoНо обнаружил, что для табличных ф-ций альтер фейлится, т.е. нельзя альтером поменять тип ф-ции со скалярного в табличный.
а почему вам надо менять тип функции со скалярного в табличный при помощи alter?
они хоть и называются все "функции", но это три отдельных типа объектов: скалярные, табличные инлайн, табличные многострочные
потому что в 2008 O_o нет CREATE OR ALTER
...
Рейтинг: 0 / 0
30.08.2019, 15:14
    #39855704
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
TaPaKShakillпропущено...

а почему вам надо менять тип функции со скалярного в табличный при помощи alter?
они хоть и называются все "функции", но это три отдельных типа объектов: скалярные, табличные инлайн, табличные многострочные
потому что в 2008 O_o нет CREATE OR ALTER
вопрос не про create, а почему автор через alter хочет кардинально сменить тип объекта. ну то есть alter скалярки в табличную это примерно то же самое, что alter скалярки в процедуру; тут же никто не будет удивляться, что не работает
...
Рейтинг: 0 / 0
30.08.2019, 15:15
    #39855706
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
ShakillTaPaKпропущено...

потому что в 2008 O_o нет CREATE OR ALTER
вопрос не про create, а почему автор через alter хочет кардинально сменить тип объекта. ну то есть alter скалярки в табличную это примерно то же самое, что alter скалярки в процедуру; тут же никто не будет удивляться, что не работает
вы нипанимаете(с)
он хочет всё время делать алтер, но если объекта нет, то он рисует его, и вот рисовать его тоже надо правильным.
...
Рейтинг: 0 / 0
30.08.2019, 15:17
    #39855707
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
Ролг ХупинавторПочему именно такой способ создания/обновления объектов ?
Он самый оптимальный, ИМХО. Лучше, чем Дроп + криейт.


и почему так имхуется?
Иногда дроп+креате лучше.

при drop + create теряются все права на объект
...
Рейтинг: 0 / 0
30.08.2019, 15:19
    #39855712
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
msLexРолг Хупинпропущено...


и почему так имхуется?
Иногда дроп+креате лучше.

при drop + create теряются все права на объект
это у тех кто не способен в роли и гранты прописывать на этапе разработке, а у тех кто мышкой дба наклацывают гранты возникают такие танцы
...
Рейтинг: 0 / 0
30.08.2019, 15:23
    #39855715
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
TaPaKCREATE OR ALTERТоже ТСа не спасет.
...
Рейтинг: 0 / 0
30.08.2019, 15:24
    #39855716
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
invmTaPaKCREATE OR ALTERТоже ТСа не спасет.
а он сейчас что по вашему делает :)
...
Рейтинг: 0 / 0
30.08.2019, 15:39
    #39855725
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
L_argo,

при работе с проектом базы в Visual Studio проблем в принципе не возникает, т.к. студия полностью автоматизирует дропы-криэйты.
...
Рейтинг: 0 / 0
30.08.2019, 16:45
    #39855762
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
msLexРолг Хупинпропущено...


и почему так имхуется?
Иногда дроп+креате лучше.

при drop + create теряются все права на объект

так и подумал, так это решается при разумном подходе...
...
Рейтинг: 0 / 0
30.08.2019, 17:04
    #39855771
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
Вообще тема кажется надуманной, т.к. использование скалярных и табличных функций синтаксически разное. Т.е. одним "переименованием" не обойдёшься.
...
Рейтинг: 0 / 0
30.08.2019, 18:27
    #39855815
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
Владислав КолосовВообще тема кажется надуманной, т.к. использование скалярных и табличных функций синтаксически разное. Т.е. одним "переименованием" не обойдёшься.Лень, матушка...
...
Рейтинг: 0 / 0
01.09.2019, 22:02
    #39856132
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
TaPaKmsLexпри drop + create теряются все права на объект
это у тех кто не способен в роли и гранты прописывать на этапе разработке, а у тех кто мышкой дба наклацывают гранты возникают такие танцыДа, права не проблема.
Главная проблема в том, что при при drop + create в течении некоторого времени объекта не существует, и попытки его использования приведут к ошибкам. Что исключает применение некоторых удобных сценариев процесса разработки

ИМХО нужно всегда делать ALTER, т.е. писать скрипты так, как в первом посте ТС.

А проблема "нельзя альтером поменять тип ф-ции со скалярного в табличный" имеет тот же практический смысл, как и "нельзя альтером поменять процедуру на таблицу", скалярная и табличная функции семантически отличаются примерно так же.

Если же вдруг (!) нужно поменять тип ф-ции со скалярного в табличный, то действуем так же, как при необходимости заменить процедуру на таблицу (ну, или на линкед-сервер, или на каталог полнотекстового поиска), то есть удаляем один объект, и создаём другой
...
Рейтинг: 0 / 0
02.09.2019, 08:47
    #39856169
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
alexeyvg,
авторГлавная проблема в том, что при при drop + create в течении некоторого времени объекта не существует, и попытки его использования приведут к ошибкам. Что исключает применение некоторых удобных сценариев процесса разработки

интересно, мы меняем объект или группу связаных расчётами объектов и при этом мы никак не можем сказать на чём же отработали в момент нашего алтера
...
Рейтинг: 0 / 0
02.09.2019, 08:59
    #39856171
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
alexeyvgИМХО нужно всегда делать ALTER, т.е. писать скрипты так, как в первом посте ТС.+1

при работе с проектом базы в Visual Studio проблем в принципе не возникает,Возникает другая проблема - необходимость использования Студии. А цель была - минимизировать до нуля использование сторонних средств.
Т.е. оставить только скрипты и механизм их обработки и создания.

Н-р генерация начальной пустой БД начинается с автоматического наката набора скриптов.
Следующий шаг - заливка начальных данных из CSV.
...
Рейтинг: 0 / 0
02.09.2019, 11:04
    #39856208
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
TaPaKalexeyvg,
авторГлавная проблема в том, что при при drop + create в течении некоторого времени объекта не существует, и попытки его использования приведут к ошибкам. Что исключает применение некоторых удобных сценариев процесса разработки

интересно, мы меняем объект или группу связаных расчётами объектов и при этом мы никак не можем сказать на чём же отработали в момент нашего алтераДа, в целом так и есть.

Я не говорю, что это единственно правильный вариант, но он вполне возможен, собственно, само наличие конструкции ALTER именно это и предполагает.

И вообще, по моему, любой механизм обновления без остановки сервиса предполагает именно это - "мы никак не можем сказать на чём же отработали в момент нашего <тут подставить некое действие во время обновления>", без дополнительного логирования.
...
Рейтинг: 0 / 0
02.09.2019, 12:11
    #39856234
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter function
L_argo,

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

Следует заметить, что комьюнити студию в лицензии разрешается использовать при разработке коммерческой БД, если она используется только для разработки БД совместно с DataTools. Так что проблем в использовании студии вообще нет.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Alter function / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]