Arsip: Menjalankan DTS via Delphi

more 17 years ago
machomen
the first.... Salam kenal buat delphier semua.. saya newbe yg ngebet belajar delphi...
2 the point..
Saya coba buat DTS via Sql server 2000, yg jadi masalah gimana ya.. jalanin DTS itu dari delphi...?? pengennya sih buat program delphi kecil untuk ngejalanin DTS yang dah di buat..
Mohon bantuan dari para master..
YangBingungJalaninDTS

more 17 years ago
machomen
kalo gak salah ni.. DTS tu Data Transformation Service.. salah satu fasilitas milik SQL SERVER..
ayo dong..!!! bantuin gmn caranya jalanin DTS via delphi??

more 17 years ago
cyber_hecker
menurut pemikiranku yang masih pemula ini, untuk menjalankan DTS lewat program delphi itu ada 2 cara yaitu :
1. dengan membuat store procedure yang nantinya akan dijalankan via Delphi.
2. mengimport microsoft DTSPackage Objeck Library kedalam delphi (Project > Import Type Library > Microsoft DTSPackage Object Library (version 2.0)
kalo gue lebih suka menggunakan cara pertama seh, walaupun untuk cara kedua mempunyai beberapa kelebihan (tapi gue belon pernah nyoba neh.. jadi belon tau kelebihannya gimana) kekekeke :P


more 17 years ago
cyber_hecker
gue masih belajar, dan baru mengenal MS SQL Server beberapa bulan yang lalu, jadi gak terlalu pinter untuk menerangkan sistem-nya. tapi secara garis besar adalah :
1. buat store procedure untuk menangani segala kesalahan (error) yang terjadi pada saat menjalankan DTS.
------------------------------------------------------------------------------------------
-- Filename : MS-OLE_SPs.sql
-- Description : Creates the two "OLE Automation Return Codes and Error Information"
-- srored procedures referenced under Books On-Line
-- Please note this script has been produced directly from Microsoft SQL
-- Server Books Online (v7). All rights Acknowledged.
------------------------------------------------------------------------------------------
-- Downloaded from http://www.swynk.com/friends/green
/ Object: Stored Procedure dbo.sp_hexadecimal /
if exists (select from sysobjects where id = object_id(N'[dbo].[sp_hexadecimal]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_hexadecimal]
GO
/ Object: Stored Procedure dbo.sp_displayoaerrorinfo /
if exists (select from sysobjects where id = object_id(N'[dbo].[sp_displayoaerrorinfo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_displayoaerrorinfo]
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
/ Object: Stored Procedure dbo.sp_hexadecimal /
CREATE PROCEDURE sp_hexadecimal
@binvalue varbinary(255),
@hexvalue varchar(255) OUTPUT
AS
DECLARE @charvalue varchar(255)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH(@binvalue)
SELECT @hexstring = '0123456789abcdef'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint 16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
/ Object: Stored Procedure dbo.sp_displayoaerrorinfo /
CREATE PROCEDURE sp_displayoaerrorinfo
@object int,
@hresult int
AS
DECLARE @output varchar(255)
DECLARE @hrhex char(10)
DECLARE @hr int
DECLARE @source varchar(255)
DECLARE @description varchar(255)
PRINT 'OLE Automation Error Information'
EXEC sp_hexadecimal @hresult, @hrhex OUT
SELECT @output = ' HRESULT: ' + @hrhex
PRINT @output
EXEC @hr = sp_OAGetErrorInfo @object, @source OUT, @description OUT
IF @hr = 0
BEGIN
SELECT @output = ' Source: ' + @source
PRINT @output
SELECT @output = ' Description: ' + @description
PRINT @output
END
ELSE
BEGIN
PRINT " sp_OAGetErrorInfo failed."
RETURN
END
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
2. buat store procedure untuk menampilkan kesalahan (error) -nya.
[code:1:c531cd4eb2]/ /
/ Filename: spDisplayPKGErrors.sql /
/ Description: Evauluate Steps for Pkg and get results. /
/ (Original by Bill Hoghead, via Neil Pike's FAQ) /
/ Created: Darren Green 200006013 /
/ /
if exists (SELECT from dbo.sysobjects where id = object_id(N'[dbo].[spDisplayPKGErrors]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[spDisplayPKGErrors]
GO
CREATE PROC spDisplayPKGErrors
@oPkg As integer
AS
SET NOCOUNT ON
DECLARE @StepCount int
DECLARE @Steps int
DECLARE @Step int
DECLARE @StepResult int
DECLARE @oPkgResult int
DECLARE @hr int
DECLARE @StepName varchar(255)
DECLARE @StepDescription varchar(255)
IF OBJECT_ID('tempdb..#PkgResult') IS NOT NULL
DROP TABLE#PkgResult
CREATE TABLE#PkgResult
(
StepName varchar(255) NOT NULL,
StepDescription varchar(255) NOT NULL,
Result bit NOT NULL
)
SELECT @oPkgResult = 0
EXEC @hr = sp_OAGetProperty @oPkg, 'Steps', @Steps OUTPUT
IF @hr <> 0
BEGIN
PRINT ' Unable to get steps'
EXEC sp_displayoaerrorinfo @oPkg , @hr
RETURN 1
END
EXEC @hr = sp_OAGetProperty @Steps, 'Count', @StepCount OUTPUT
IF @hr <> 0
BEGIN
PRINT ' Unable to get number of steps'
EXEC sp_displayoaerrorinfo @Steps , @hr
RETURN 1
END
WHILE @StepCount > 0
BEGIN
EXEC @hr = sp_OAGetProperty @Steps, 'Item', @Step OUTPUT, @StepCount
IF @hr <> 0
BEGIN
PRINT ' Unable to get step'
EXEC sp_displayoaerrorinfo @Steps , @hr
RETURN 1
END
EXEC @hr = sp_OAGetProperty @Step, 'ExecutionResult', @StepResult OUTPUT
IF @hr <> 0
BEGIN
PRINT ' Unable to get ExecutionResult'
EXEC sp_displayoaerrorinfo @Step , @hr
RETURN 1
END
EXEC @hr = sp_OAGetProperty @Step, 'Name', @StepName OUTPUT
IF @hr <> 0
BEGIN
PRINT ' Unable to get step Name'
EXEC sp_displayoaerrorinfo @Step , @hr
RETURN 1
END
EXEC @hr = sp_OAGetProperty @Step, 'Description', @StepDescription OUTPUT
IF @hr <> 0
BEGIN
PRINT ' Unable to get step Description'
EXEC sp_displayoaerrorinfo @Step , @hr
RETURN 1
END
INSERT#PkgResultVALUES(@StepName, @StepDescription, @StepResult)
PRINT 'Step ' + @StepName + ' (' + @StepDescription + ') ' + CASE WHEN @StepResult = 0 THEN 'Succeeded' ELSE 'Failed' END
SELECT @StepCount = @StepCount - 1
SELECT @oPkgResult = @oPkgResult + @StepResult
END
SELECT FROM#PkgResult
IF @oPkgResult > 0
BEGIN
PRINT 'Package had ' + CAST(@oPkgResult as varchar) + ' failed step(s)'
RETURN 9
END
ELSE
BEGIN
PRINT 'Packge Succeeded'
RETURN 0
END
GO
[/code:1:c531cd4eb2]
3. buat store procedure untuk menjalankan DTS.
[code:1:c531cd4eb2]/ /
/ Filename: spExecutePKGGlobalVariables.sql /
/ Description: Execute DTS Packages via sp_OAxxxx, and specify up to two /
/ global variables to change /
/ Created: Darren Green 200006013 /
/ /
if exists (select from sysobjects where id = object_id(N'[dbo].[spExecutePKGGlobalVariables]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[spExecutePKGGlobalVariables]
GO
CREATE PROC spExecutePKGGlobalVariables
@Server varchar(255),
@PkgName varchar(255), -- Package Name (Defaults to most recent version)
@ServerPWD varchar(255) = Null, -- Server Password if using SQL Security to load Package (UID is SUSER_NAME())
@IntSecurity bit = 0, -- 0 = SQL Server Security, 1 = Integrated Security
@PkgPWD varchar(255) = '', -- Package Password
@GlobalV_1 varchar(511) = NULL, -- First Optional Global Variable (GlobalVariableName=GlobalVariableValue)
@GlobalV_2 varchar(511) = NULL -- Second Optional Global Variable
AS
SET NOCOUNT ON
/
Return Values
- 0 Successfull execution of Package
- 1 OLE Error
- 9 Failure of Package
/
DECLARE @hr int, @ret int, @oPKG int, @Cmd varchar(1000)
DECLARE @GVName varchar(255), @GVValue varchar(255)
-- Create a Pkg Object
EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUTPUT
IF @hr <> 0
BEGIN
PRINT ' Create Package object failed'
EXEC sp_displayoaerrorinfo @oPKG, @hr
RETURN 1
END
-- Evaluate Security and Build LoadFromSQLServer Statement
IF @IntSecurity = 0
SET @Cmd = 'LoadFromSQLServer("' + @Server +'", "' + SUSER_SNAME() + '", "' + @ServerPWD + '", 0, "' + @PkgPWD + '", , , "' + @PkgName + '")'
ELSE
SET @Cmd = 'LoadFromSQLServer("' + @Server +'", "", "", 256, "' + @PkgPWD + '", , , "' + @PkgName + '")'
EXEC @hr = sp_OAMethod @oPKG, @Cmd, NULL
IF @hr <> 0
BEGIN
PRINT ' LoadFromSQLServer failed'
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
IF @GlobalV_1 IS NOT NULL
BEGIN
SET @GVName = LEFT(@GlobalV_1, CHARINDEX('=', @GlobalV_1)-1)
SET @GVValue = RIGHT(@GlobalV_1, LEN(@GlobalV_1) - CHARINDEX('=', @GlobalV_1))
SET @Cmd = 'GlobalVariables("' + @GVName + '").Value'
EXEC @hr = sp_OASetProperty @oPKG, @Cmd, @GVValue
IF @hr <> 0
BEGIN
PRINT ' GlobalVariable 1 Assignment Failed'
EXEC sp_displayoaerrorinfo @oPKG, @hr
RETURN 1
END
END
IF @GlobalV_2 IS NOT NULL
BEGIN
SET @GVName = LEFT(@GlobalV_2, CHARINDEX('=', @GlobalV_2)-1)
SET @GVValue = RIGHT(@GlobalV_2, LEN(@GlobalV_2) - CHARINDEX('=', @GlobalV_2))
SET @Cmd = 'GlobalVariables("' + @GVName + '").Value'
EXEC @hr = sp_OASetProperty @oPKG, @Cmd, @GVValue
IF @hr <> 0
BEGIN
PRINT ' GlobalVariable 2 Assignment Failed'
EXEC sp_displayoaerrorinfo @oPKG, @hr
RETURN 1
END
END
-- Execute Pkg
EXEC @hr = sp_OAMethod @oPKG, 'Execute'
IF @hr <> 0
BEGIN
PRINT ' Execute failed'
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
-- Check Pkg Errors
EXEC @ret=spDisplayPkgErrors @oPKG
-- Unitialize the Pkg
EXEC @hr = sp_OAMethod @oPKG, 'UnInitialize'
IF @hr <> 0
BEGIN
PRINT ' UnInitialize failed'
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
-- Clean Up
EXEC @hr = sp_OADestroy @oPKG
IF @hr <> 0
BEGIN
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
RETURN @ret
GO
[/code:1:c531cd4eb2]
[code:1:c531cd4eb2]/ /
/ Filename: spExecutePKG.sql /
/ Description: Execute DTS Packages via sp_OAxxxx /
/ Created: Darren Green 200006013 /
/ /
if exists (select from sysobjects where id = object_id(N'[dbo].[spExecutePKG]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[spExecutePKG]
GO
CREATE PROC spExecutePKG
@Server varchar(255),
@PkgName varchar(255), -- Package Name (Defaults to most recent version)
@ServerPWD varchar(255) = Null, -- Server Password if using SQL Security to load Package (UID is SUSER_NAME())
@IntSecurity bit = 0, -- 0 = SQL Server Security, 1 = Integrated Security
@PkgPWD varchar(255) = '' -- Package Password
AS
SET NOCOUNT ON
/
Return Values
- 0 Successfull execution of Package
- 1 OLE Error
- 9 Failure of Package
/
DECLARE @hr int, @ret int, @oPKG int, @Cmd varchar(1000)
-- Create a Pkg Object
EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUTPUT
IF @hr <> 0
BEGIN
PRINT ' Create Package object failed'
EXEC sp_displayoaerrorinfo @oPKG, @hr
RETURN 1
END
-- Evaluate Security and Build LoadFromSQLServer Statement
IF @IntSecurity = 0
SET @Cmd = 'LoadFromSQLServer("' + @Server +'", "' + SUSER_SNAME() + '", "' + @ServerPWD + '", 0, "' + @PkgPWD + '", , , "' + @PkgName + '")'
ELSE
SET @Cmd = 'LoadFromSQLServer("' + @Server +'", "", "", 256, "' + @PkgPWD + '", , , "' + @PkgName + '")'
EXEC @hr = sp_OAMethod @oPKG, @Cmd, NULL
IF @hr <> 0
BEGIN
PRINT ' LoadFromSQLServer failed'
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
-- Execute Pkg
EXEC @hr = sp_OAMethod @oPKG, 'Execute'
IF @hr <> 0
BEGIN
PRINT ' Execute failed'
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
-- Check Pkg Errors
EXEC @ret=spDisplayPkgErrors @oPKG
-- Unitialize the Pkg
EXEC @hr = sp_OAMethod @oPKG, 'UnInitialize'
IF @hr <> 0
BEGIN
PRINT '* UnInitialize failed'
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
-- Clean Up
EXEC @hr = sp_OADestroy @oPKG
IF @hr <> 0
BEGIN
EXEC sp_displayoaerrorinfo @oPKG , @hr
RETURN 1
END
RETURN @ret
GO[/code:1:c531cd4eb2]

more 17 years ago
cyber_hecker
sebagai contoh, gue membuat sebuat DTS yang berfungsi untuk membuat tabel, setelah itu memindahkan datanya ke tabel yang baru dibuat tersebut.
1. buat dts dengan nama dtsTest1
2. jalankan SQL Query Analizer
3. jalankan store procedure yang telah kita buat sebelumnya
huplaa... dan berhasil, sekarang kita cuma butuh menjalankan store procedure yang kita buat tersebut melalui delphi.

EXEC spExecutePKGGlobalVariables @Server='SERVER02',
@PkgName='dtsTest1', @IntSecurity=1


more 17 years ago
machomen
wah.. baru mengenal Sql aja dah ky gini... gima kl dah expert... emang yg padi itu semakin berisi semakin menunduk... heeheee...
OK thanks bgt atas responnya kang cyber... tar tak coba deh...

more 16 years ago
kecoak
eh tapi ati2 lho ama yang namanya duplicates values gara2 pake DTS sering2 import dari 1 File database laen (file kaya MSAccess) :)

more 13 years ago
IdrisZZ
Maaf Mas, buka thread lama. Saya mau nanya bagaimana import database dari MySQL ke SQL Server 2000 menggunakan DTS dengan tabel2 yg di index, sehingga ketika melakukan import lagi sesuai schedule hanya menambah data yg baru saja dari MySQL ke SQL Server 2000 nya. Terimakasih sebelumnya.

more 11 years ago
andihdr
@cyber_hecker.... sy udah coba tp error
* LoadFromSQLServer failed
OLE Automation Error Information
HRESULT: 0x80004005
sp_OAGetErrorInfo failed.
dimana kesalahannya???
mohon dikoreksi ..
more ...
- Pages:
- 1
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 2 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 3 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 10 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 10 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 10 years ago
Random Topic
- Input Data MS SQL via Form??
by ibiz in MsSQL more 16 years ago - membuat function untuk menuliskan data ke memo ???
by jajang in Tip n Trik Pemrograman more 14 years ago - multi camera dengan DSPack
by agil in Multimedia & Graphic Enhancement more 11 years ago - Download ms SQL Server 2000 Dimana ?
by hyde in MsSQL more 15 years ago - mengembalikan data .exe menjadi file mentah kembali
by Jokuy in Lain-lain more 15 years ago - Kok lama ?
by budi_bunga in MySQL more 16 years ago - RE: cara membuat vnc di delphi 7
by dadan in Hal umum tentang Pascal Indonesia more 16 years ago - Preview Quick Report
by vikraa in Reporting more 15 years ago - Memisah tampilan Monitor dan TV dalam software Karaoke....
by purnomo2007 in Multimedia & Graphic Enhancement more 12 years ago - Mengambil skala prioritas...
by Random in Tip n Trik Pemrograman more 15 years ago