Show/Hide Toolbars

Руководство по тех. обслуживанию

Работа с объектами ASSEMBLY и хранимыми процедурами

Ссылки Назад Вверх Вперед

В большинстве случаев база данных "Первой Формы" имеет название "D10task", но может называться и по-другому (информацию о названии базы данных можно уточнить в тех. поддержке).

В данном разделе представлено описание структуры файла create_crl.sql.

1. Процедура включения доверия к БД. Нужно, чтобы процедуры вообще работали, это "доверие" сервера к БД

alter database [D10Task] set trustworthy on

2. Проверка наличия пользователя D10TaskOwner в БД.

if not exists (SELECT name FROM master.dbo.syslogins WHERE name = N'D10TaskOwner') —
begin
  create login D10TaskOwner with password = 'sg4fdsviavFDxcCHFSD$@',cHECK_EXPIRATION = OFF, cHECK_POLICY = OFF
end
 
EXEC dbo.sp_changedbowner @loginame = N'D10TaskOwner', @map = falseесли пользователя "D10TaskOwner" нет, то система назначает его владельцем БД.
go

3. Пользователю, назначенному владельцем БД, выдаются права на использование исполняемых файлов *.dll

use [master]
go
GRANT EXTERNAL ACCESS ASSEMBLY TO D10TaskOwner

4. Создается привязка объектов ASSEMBLY к сборкам StoredProcedures.dll и StoredProcedures.XmlSerializers.dll

use [D10Task]
go
create ASSEMBLY StoredProceduresгенерируется сборка с именем StoredProcedures.dll  (параметр assembly_name). В данном наименование сборки StoredProcedures. Обратите внимание, что данное имя должно быть уникальным в БД.
 
FROM 'C:\Program Files (x86)\TCSQL\StoredProcedures.dll' — локальный путь сборки исполняемых файлов *.dll. Путь нужно указывать тот, куда были загружены *.dll файлы.
WITH PERMISSION_SET = EXTERNAL_ACCESS; — сборка StoredProceduress.dll получает доступ к внешним ресурсам
GO
 
create ASSEMBLY [StoredProcedures.XmlSerializers] — генерируется сборка с именем StoredProcedures.dll  (параметр assembly_name). В данном наименование сборки StoredProcedures. Обратите внимание, что данное имя должно быть уникальным в БД.
 
FROM 'C:\Program Files (x86)\TCSQL\StoredProcedures.XmlSerializers.dll'
WITH PERMISSION_SET = SAFE; — генерируется сборка с именем StoredProcedures.XmlSerializers.dll ограниченный доступ к внешним ресурсам. Путь нужно указывать тот, куда были загружены *.dll файлы.
GO
На данном шаге производится проверка наличия хранимой процедуры для отправки почты почты пользователя "D10TaskOwner".
use [master]
go
if not exists  (select id from sysobjects where name = 'xp_smtp_sendmail')  — проверяем существует ли хранимая процедура для отправки почты "xp_smtp_sendmail"
begin
  exec sp_addextendedproc 'xp_smtp_sendmail', 'C:\Program Files (x86)\TCSQL\xpsmtp80.dll'  — в случае, если необходимая хранимая процедура ("xp_smtp_sendmail") не обнаружена, то система регистрирует в Microsoft SQL server даннуюд хранимую процедуру для последующего использования
  grant execute on xp_smtp_sendmail to publicвызов хранимой процедуры "xp_smtp_sendmail"
end
go

5. Вызов хранимых процедур, описанных в разделе Хранимые процедуры "Первой Формы". При этом источником указываются объекты ASSEMBLY, описанные в пункте 4.

use [D10Task]
go
 
CREATE PROCEDURE tc_ws_newTask(
    @UserID int, @Task nvarchar(4000), @OrderedTime datetime=NULL,
    @Category int, @Comment nvarchar(4000) = '',   @extParamStr nvarchar(4000) = '',
    @perfID int = NULL, @priorityID int = 1, @D3TaskID int = 0, @ParentID int = 0,
    @UserNick nvarchar(20) = '', @remind bit = 0, @PropagateSubscribers bit = 1)
AS
EXTERNAL NAME StoredProcedures.StoredProcedures.NewTask

warning_icon  В данном разделе хранимая процедура tc_ws_newTask представлена для примера, файл create_crl.sql содержит полный список процедур. С назначением и описанием параметров хранимых процедур более подробно  можно ознакомиться в разделе Хранимые процедуры "Первой Формы".

Полезные ссылки