Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / получение @@procid в clr stored procedure / 6 сообщений из 6, страница 1 из 1
08.08.2014, 15:39
    #38716126
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение @@procid в clr stored procedure
Доброго времени суток,

Есть процедурка clr которая может принимать несколько параметров для связи с smtp сервером,
смысл в том что если параметры аутенфикации не переданны явно процедуре, она автоматом должна начитать их со своих расширенных свойств.

Для этого в процедуре реализован запрос вида
Код: sql
1.
select convert(varchar(max), value) from sys.extended_properties where class_desc = 'OBJECT_OR_COLUMN' and major_id = @ProcID and name = 'ServerName'


Код: sql
1.
select convert(varchar(max), value) from sys.extended_properties where class_desc = 'OBJECT_OR_COLUMN' and major_id = @ProcID and name = 'Port'


Код: sql
1.
select convert(varchar(max), value) from sys.extended_properties where class_desc = 'OBJECT_OR_COLUMN' and major_id = @ProcID and name = 'UserName'


Код: sql
1.
select convert(varchar(max), value) from sys.extended_properties where class_desc = 'OBJECT_OR_COLUMN' and major_id = @ProcID and name = 'Password'



соотвественно в эти запросы надо передать @ProcID к которому привязаны эти расширенные свойства.

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

поскольку clr может называться типа sp_clr_SendMail в sql server ее запросто могут создать как
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create procedure test_SMTP
                @title nvarchar(255),
                @text nvarchar(max),
                @server nvarchar(255) = NULL,
                @port nvarchar(255) = NULL,
                @login nvarchar(255) = NULL,
                @password nvarchar(255) = NULL
as external name clr_mtd.[StoredProcedures.SP].sp_clr_SendMail



вот необходимо уже в среде исполнения .net получить или @@procid или имя 'test_SMTP'
...
Рейтинг: 0 / 0
08.08.2014, 15:50
    #38716146
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение @@procid в clr stored procedure
felix_ff,
Код: sql
1.
SELECT @@procid
...
Рейтинг: 0 / 0
08.08.2014, 16:04
    #38716171
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение @@procid в clr stored procedure
ЕвгенийВ,

Возвращает идентификатор объекта (ID) текущего модуля Transact-SQL. Модуль Transact-SQL может быть хранимой процедурой, определяемой пользователем функцией или триггером. Функция @@PROCID не может быть вызвана из модулей среды CLR или внутрипроцессного поставщика доступа к данным. (c)BOL

я так понимаю что не покатит
...
Рейтинг: 0 / 0
08.08.2014, 16:31
    #38716210
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение @@procid в clr stored procedure
felix_ff,
так заведите свою таблицу с параметрами и берите оттуда.
...
Рейтинг: 0 / 0
08.08.2014, 16:35
    #38716214
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение @@procid в clr stored procedure
felix_ff,

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

Так что наврядли вы получите имя процедуры t-sql, из которой была вызвана clr-процедура

PS Вы с этим вопросом в ветку MS SQL постучитесь, там просто монстры сидят. Глядишь, если не убьют сразу за вопрос, так и ответят.
...
Рейтинг: 0 / 0
08.08.2014, 16:37
    #38716217
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение @@procid в clr stored procedure
Ну или в ваши clr-процедуры добавьте еще параметр @procid из t-sql передавайте @@procid
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / получение @@procid в clr stored procedure / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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