Arsip: Menjalankan DTS via Delphi

 
user image
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
user image
more 19 years ago

imunk

DTS itu apaan sih, bisa jelasin gak maklum neh rada lemot ilmunya......:)
user image
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??
user image
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
user image
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]
user image
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
EXEC spExecutePKGGlobalVariables @Server='SERVER02', 
  @PkgName='dtsTest1', @IntSecurity=1
huplaa... dan berhasil, sekarang kita cuma butuh menjalankan store procedure yang kita buat tersebut melalui delphi.
user image
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...
user image
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) :)
user image
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.
user image
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
Share to

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

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com