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

Откуда:
Сообщений: 1017
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'p_DTSWrapper' AND type = 'P')
DROP PROCEDURE p_DTSWrapper
GO

----------------------------------------------------------------
CREATE PROCEDURE dbo.p_DTSWrapper
@PkgName VARCHAR(300)='',
@TargetFullFileName VARCHAR(1000)='',
@sessId VARCHAR(100)=''
AS
SET NOCOUNT ON
IF LEN(LTRIM(ISNULL(@PkgName,'')))<1 OR LEN(LTRIM(ISNULL(@TargetFullFileName,'')))<1
OR LEN(LTRIM(ISNULL(@sessId,'')))<1
BEGIN
RAISERROR('Неправильно указаны параметры для p_DTSWrapper !',16,1)
RETURN -1
END

DECLARE @pkg INT, @rc INT, @SayError VARCHAR(1024), @LoadStr VARCHAR(1024)

EXECUTE @rc = sp_OACreate 'DTS.Package', @pkg OUTPUT
IF @rc<>0
BEGIN
SET @SayError=' Ошибка при создании объекта DTS.Package. Пакет '+@PkgName
RAISERROR(@SayError,16,1)
RETURN -2
END


EXECUTE @rc = sp_OAMethod @pkg,
'LoadFromSQLServer', NULL,
@ServerName = "(local)",
-- @ServerUserName = "sa",
-- @ServerPassword = "pwd",
-- @Flags = 0 -- SQL Server authentication
@Flags = 256, -- NT authentication
@PackageName = @PkgName
IF @rc<>0
BEGIN
SET @SayError=' Ошибка при установке опций пакета '+@PkgName
RAISERROR(@SayError,16,1)
RETURN -3
END


EXECUTE @rc = sp_OASetProperty @pkg, 'connections(2).DataSource', @TargetFullFileName -- предполагаем, что для Excel был DataSource под номером 2 !!!
IF @rc<>0
BEGIN
SET @SayError=' Ошибка передачи параметра пакету '+@PkgName
RAISERROR(@SayError,16,1)
RETURN -4
END
EXECUTE @rc = sp_OASetProperty @pkg, 'GlobalVariables("sessId").Value', @sessId
IF @rc<>0
BEGIN
SET @SayError=' Ошибка передачи параметра пакету '+@PkgName
RAISERROR(@SayError,16,1)
RETURN -4
END

EXECUTE @rc = sp_OAMethod @pkg, 'EXECUTE'
IF @rc<>0
BEGIN
SET @SayError=' Ошибка исполнения пакета '+@PkgName
RAISERROR(@SayError,16,1)
RETURN -5
END


EXECUTE @rc = sp_OADestroy @pkg
IF @rc<>0
BEGIN
SET @SayError=' Ошибка уничтожения объекта пакета '+@PkgName
RAISERROR(@SayError,16,1)
RETURN -6
END




-- Пример вызова:
-- EXECUTE dbo.p_DTSWrapper @PkgName='pkgUb', @TargetFullFileName='C:\t.xls', @hostname='myUser'
6 окт 03, 10:06    [364457]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить