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

Откуда:
Сообщений: 33
Привет всем

MS SQL Server 2005.

Написал и подключил библиотеку с функцией к серверу. Проверил отдельно, работает.

Пишу для установки триггера
USE Test;
GO

IF OBJECT_ID ('TestTrigger', 'TR') IS NOT NULL
   DROP TRIGGER TestTrigger;
GO

CREATE TRIGGER TestTrigger ON Table_test
AFTER INSERT
AS 
BEGIN
declare @id1 int;

SELECT @@IDENTITY AS [IDENTITY];
SET @id1 = @@IDENTITY;

EXECUTE xp_SendSignal @id1;

END
GO


1. Без строки "EXECUTE xp_SendSignal @id1;" триггер замечательно работает.


Регистрирую расширенную функцию:

sp_addextendedproc 'xp_SendSignal', 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\xpVideoEvent.dll';
sp_helpextendedproc 'xp_SendSignal';

"sp_helpextendedproc" выдает имя функции и путь к dll.

2. Со строкой EXECUTE выдает:

"Нельзя добавлять строки к sysdepends для текущего объекта, поскольку он зависит от отсутствующего объекта "xp_SendSignal". Данный объект еще только будет создан."

Если после этого запустить триггер имеем:

"Сообщение 2812, уровень 16, состояние 62, процедура TestTrigger, строка 11
Не удалось найти хранимую процедуру "xp_SendSignal".
Выполнение данной инструкции было прервано."

Хочу подчеркнуть, что еще перед установкой триггера, запуск sp_helpextendedproc 'xp_SendSignal' указывает, что
функция подключена успешно.
22 июн 15, 18:12    [17803119]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
alik_tv
Хочу подчеркнуть, что еще перед установкой триггера, запуск sp_helpextendedproc 'xp_SendSignal' указывает, что
функция подключена успешно.
Эээ, ну а создана она или нет? Вы её что, не пытались запустить?
22 июн 15, 19:36    [17803375]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alik_tv
Member

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

я не запускал функцию, а пересоздаю объект - триггер ("CREATE TRIGGER ...").
22 июн 15, 20:49    [17803610]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2390
Блог
alik_tv,

а вот так что говорит?
EXECUTE xp_SendSignal 1;
22 июн 15, 21:16    [17803705]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
alik_tv
я не запускал функцию, а пересоздаю объект - триггер ("CREATE TRIGGER ...").
А вы запустите.

Вообще как то странно - получать ошибку о невозможности вызвать функцию, и не попытаться её просто вызвать :-)
22 июн 15, 23:03    [17804154]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
alik_tv
EXECUTE xp_SendSignal @id1;
И вообще, где у вас префикс базы master, префикс владельца?

Короче, вы сначала её вызовите просто из SSMS, в контексте той базы, в которой создаёте триггер (то есть в контектсе базы Test), а потом уже вставляйте в триггер.
22 июн 15, 23:07    [17804177]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alik_tv
Member

Откуда:
Сообщений: 33
Павел Воронцов,

тоже самое. и так "EXECUTE xp_SendSignal" тоже.
23 июн 15, 14:23    [17806825]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
alik_tv
тоже самое. и так "EXECUTE xp_SendSignal" тоже.
Потому что нужно
EXECUTE master.dbo.xp_SendSignal 1;
23 июн 15, 14:30    [17806859]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alik_tv
Member

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

конечно я тестировал.
так работает:
USE master;
GO

EXECUTE xp_SendSignal;


и так:
USE Test;
GO

USE master; EXECUTE xp_SendSignal;


Но если я пишу "USE master; EXECUTE xp_SendSignal;" в триггере, пишет
"Сообщение 154, уровень 15, состояние 1, процедура TestTrigger, строка 11
инструкция USE базы данных не разрешено в процедура, функция или триггер."

Тут действительно проблема с видимостью.
23 июн 15, 14:43    [17806918]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alik_tv
Member

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

работает, спасибо за помощь. про владельца я забыл.
23 июн 15, 14:51    [17806974]     Ответить | Цитировать Сообщить модератору
 Re: Системная расширенная функция  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
alik_tv
Но если я пишу "USE master; EXECUTE xp_SendSignal;" в триггере, пишет
Разумеется, так писать нельзя.

EXECUTE master.владелец.xp_SendSignal
23 июн 15, 15:53    [17807397]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить