Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
SQL2005

Как по внешним признакам узнать, что extended stored procedure можно вызвать из UDF?

Есть безосновательное предположение, что
sys.sysschobjs.status & 0x20 = 0x20 and type = 'x'
имеет к этому отношение.
24 июл 09, 15:42    [7457575]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
Больше интересуют extended stored procedures самого сервера, а не собственные из .dll
24 июл 09, 16:07    [7457825]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT OBJECTPROPERTY(OBJECT_ID(N'xp_cmdshell','X'),'IsExtendedProc');
SELECT OBJECTPROPERTY(OBJECT_ID(N'xp_cmdshell','X'),'IsMSShipped');
?
24 июл 09, 16:31    [7458048]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

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

SELECT OBJECTPROPERTY(OBJECT_ID('sp_executesql','X'),'IsExtendedProc');
SELECT OBJECTPROPERTY(OBJECT_ID('sp_executesql','X'),'IsMSShipped');

она даёт 1 и 1, но из функции вызвать нельзя

select
	so.uid,
	so.name
from
	master.dbo.sysobjects	so
	left	join	sys.sysschobjs	sc	on
		sc.status&	0x20=	0x20
	and	sc.type=	'x'
	and	sc.name=	so.name	collate Latin1_General_CI_AI
where
		OBJECTPROPERTY(so.id,'IsExtendedProc')=1
	and	OBJECTPROPERTY(so.id,'IsMSShipped')=1
	and	sc.name	is	null

select
	sc.nsid,
	sc.name
from
	sys.sysschobjs	sc
	left	join	master.dbo.sysobjects	so	on
		OBJECTPROPERTY(so.id,'IsExtendedProc')=1
	and	OBJECTPROPERTY(so.id,'IsMSShipped')=1
	and	so.name=	sc.name	collate Latin1_General_CI_AI
where
		sc.status&	0x20=	0x20
	and	sc.type=	'x'
	and	so.name	is	null

в sysobjects расширенных процедур больше, но насколько они менее расширены, чем UDF-вызываемые- не ясно
24 июл 09, 17:06    [7458305]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а что из системных надо вызвать из UDF, кроме sp_executesql?
24 июл 09, 17:58    [7458618]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

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

Очень хочется sp_getapplock, он же xp_userlock. Но xp_userlock не считается за esp.
24 июл 09, 18:29    [7458742]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
Вообще, нужен список того, что может вызвать side effects, чтобы из них можно было выбрать самый подходящий.
24 июл 09, 18:30    [7458745]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Crimean
Member

Откуда:
Сообщений: 13148
tunknown
Crimean,

Очень хочется sp_getapplock, он же xp_userlock. Но xp_userlock не считается за esp.


из UDF????
27 июл 09, 09:56    [7462102]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

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

Для логических блокировок. Делаем выборку и "накладываем блокировки" на все полученные идентификаторы. Вместо курсора.
27 июл 09, 10:11    [7462159]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Crimean
Member

Откуда:
Сообщений: 13148
tunknown
Crimean,

Для логических блокировок. Делаем выборку и "накладываем блокировки" на все полученные идентификаторы. Вместо курсора.


а какой смысл делать это именно из UDF??
27 июл 09, 10:59    [7462498]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
Crimean
а какой смысл делать это именно из UDF??


select
   dbo.my_lock(id),
   ...
from
   ...

Получаем и одновременно "блокируем" данные выборки. Курсор или цикл- медленнее и неудобнее.
27 июл 09, 12:56    [7463559]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
tunknown
Crimean
а какой смысл делать это именно из UDF??


select
   dbo.my_lock(id),
   ...
from
   ...

Получаем и одновременно "блокируем" данные выборки. Курсор или цикл- медленнее и неудобнее.


Вот это вот и есть side effect. Делайте в хп.
27 июл 09, 12:59    [7463589]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Crimean
Member

Откуда:
Сообщений: 13148
ужос - ужос.. вы думаете, вы сами блокировки обработаете эффективнее сервера? может хоть это ему оставить? имхо в отличие от планов запросов с блокировками сервер пока справляется..
27 июл 09, 13:45    [7464024]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
Crimean
ужос - ужос.. вы думаете, вы сами блокировки обработаете эффективнее сервера?


Где написано, что блокировки нужно обрабатывать самостоятельно? Разговор идёт о "логических блокировках". Кажется, настоящие блокировки sp_getapplock не умеет делать.
27 июл 09, 15:16    [7464731]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
tunknown
Crimean
ужос - ужос.. вы думаете, вы сами блокировки обработаете эффективнее сервера?


Где написано, что блокировки нужно обрабатывать самостоятельно? Разговор идёт о "логических блокировках". Кажется, настоящие блокировки sp_getapplock не умеет делать.

А что значит настоящие и ненастоящие
Блокировки созданные через sp_getapplock видны в той же системной таблице, что и другие блокировки.
27 июл 09, 15:53    [7465007]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
Glory
А что значит настоящие и ненастоящие
Блокировки созданные через sp_getapplock видны в той же системной таблице, что и другие блокировки.


Логические блокировки обрабатываемые приложением, а не сервером, например, для эмуляции длинных транзакций, но не только.
27 июл 09, 17:23    [7465641]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
tunknown
Glory
А что значит настоящие и ненастоящие
Блокировки созданные через sp_getapplock видны в той же системной таблице, что и другие блокировки.


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


И зачем нужено выполнять эту вашу логическую блокировку внутри udf, да еще в запросе для каждого вызова, если она логическая ?
27 июл 09, 17:33    [7465695]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
Glory
И зачем нужено выполнять эту вашу логическую блокировку внутри udf, да еще в запросе для каждого вызова, если она логическая ?


tunknown
Получаем и одновременно "блокируем" данные выборки. Курсор или цикл- медленнее и неудобнее.
27 июл 09, 18:29    [7465970]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Crimean
вы думаете, вы сами блокировки обработаете эффективнее сервера?
27 июл 09, 18:36    [7465988]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
tunknown
Member

Откуда:
Сообщений: 752
Crimean
Crimean
вы думаете, вы сами блокировки обработаете эффективнее сервера?


:-)

Логические- да. Тем более, что логические блокировки уровня приложения сервер никак не обрабатывает.
27 июл 09, 19:16    [7466109]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Crimean
Member

Откуда:
Сообщений: 13148
2 tunknown
если короче, то вы, похоже, не совсем понимаете происходящее, извините
я п порекомендовал сначала глубжЕе с блокировками разобраться
то что вы делаете "с блокировками" как минимум смешно, опять извините
27 июл 09, 19:29    [7466148]     Ответить | Цитировать Сообщить модератору
 Re: Вызов extended stored procedures из UDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
tunknown
Glory
И зачем нужено выполнять эту вашу логическую блокировку внутри udf, да еще в запросе для каждого вызова, если она логическая ?


tunknown
Получаем и одновременно "блокируем" данные выборки. Курсор или цикл- медленнее и неудобнее.

Вы уж определитесь - хотите вы блокировать данные или блокировать какую то логику.
Потому что вы то про одно пишите, то про другое
27 июл 09, 22:15    [7466497]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить