Arsip: Menjalankan DTS via Delphi

more 19 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 19 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 19 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 19 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 19 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 19 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 18 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 15 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 13 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
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Perintah Explode
by Yudho in Hal umum tentang Pascal Indonesia more 18 years ago - tanya buat nomor halaman di quick report
by Iansx in Tip n Trik Pemrograman more 17 years ago - membuat tingkatan login
by afre_N in Lain-lain more 17 years ago - hide maximize button ????
by r_rie in Form Enhancement & Graphical Controls more 16 years ago - Surat cinta untuk Bang @Admin
by saysansay in OOT more 17 years ago - Paradox & Rich Edit
by clark in Tutorial & Community Project more 19 years ago - help me buat rsa .........
by CurutZ in Tip n Trik Pemrograman more 17 years ago - Run SQL Ke MS ACCSESS 1000 Karyawan?
by anosolano in Hal umum tentang Pascal Indonesia more 18 years ago - Triger, Field Scanning dan Looping
by Penjahat in MySQL more 15 years ago - TMemoryStream
by muktaf in Tip n Trik Pemrograman more 17 years ago