I’m getting a little frustrated with DTS. After 4 days of trying to solve what I think should be a simple problem, I’m ready to show my ignorance and see if someone here can help me.
The problem:
I have 2 servers, MS SQL Server and DB2. I’ve set up a DTS package that will update tables in my SQL database from DB2. I have another package that writes data from SQL to DB2. I’ve built an MS Access front end project attached to the SQL server and I want it to execute the DTS package when a button is pressed. I’m currently using the Evaluation version of SQL Server.
I’ve discovered my options for firing off a DTS package are the following:
1) Use the VB object model.
2) Use the dtsrun.exe utility, either from a stored procedure or a command prompt.
3) Set up a SQL agent job to run the DTS package on a schedule.
What I would really like to do is get the package to run on the server with minimal installation on the client workstations.
I’d rather not have to install the VB object model on every workstation, which is my big problem with using option #1.
(I did try this option using the article on the sqldts.com website about redistributing DTS with a package found at I couldn’t get the regsvr32.exe to register the dll’s for me on a win2000 box. I kept getting the error “The specified module could not be found.” At any rate, this seems like I shouldn’t have to have that much overhead.)
The problem I’ve found with the dtsrun.exe utility is that using it from a command prompt requires it to be installed on the client, same as the VB object model. I tried setting up a .bat file on the server which would be executed from the client and run the dtsrun utility, with the same problem – it tried to run on the client.
Running the dtsrun utility from a stored procedure works pretty well… if the user has server administrator rights. For obvious reasons I’d rather my users not have those. I tried using the EXEC master..xp_cmdshell 'dtsrun /S /E /N' command in a stored procedure. It worked pretty well.
I tried setting up an SQL server job to run the DTS package, but the most frequently it could be run is every 1 minute. I’d like it to be updated on demand, not according to a schedule.
(I think it was on the sqldts.com website I read about a trick you could use that has the job look to a table, and if it finds a ‘yes’ value in a column, it executes the update. The client application updates that column to the ‘yes’ value when it wants an update run. I’ts a clever approach, and would work if the job could be setup to look every few seconds, instead of a minute.)
So does anyone know of a better approach? I’d like all the software required to run the DTS program be on the server, with minimal client footprint. Is there a way to run a program so it executes on the server from the client? I feel dumb asking that question because it seems like a fundamental tenet of client\server computing. Maybe Microsoft will make this easier in Yukon, but I can’t hold my breath that long.
Thanks in advance for any help.
Jimmy211
The problem:
I have 2 servers, MS SQL Server and DB2. I’ve set up a DTS package that will update tables in my SQL database from DB2. I have another package that writes data from SQL to DB2. I’ve built an MS Access front end project attached to the SQL server and I want it to execute the DTS package when a button is pressed. I’m currently using the Evaluation version of SQL Server.
I’ve discovered my options for firing off a DTS package are the following:
1) Use the VB object model.
2) Use the dtsrun.exe utility, either from a stored procedure or a command prompt.
3) Set up a SQL agent job to run the DTS package on a schedule.
What I would really like to do is get the package to run on the server with minimal installation on the client workstations.
I’d rather not have to install the VB object model on every workstation, which is my big problem with using option #1.
(I did try this option using the article on the sqldts.com website about redistributing DTS with a package found at I couldn’t get the regsvr32.exe to register the dll’s for me on a win2000 box. I kept getting the error “The specified module could not be found.” At any rate, this seems like I shouldn’t have to have that much overhead.)
The problem I’ve found with the dtsrun.exe utility is that using it from a command prompt requires it to be installed on the client, same as the VB object model. I tried setting up a .bat file on the server which would be executed from the client and run the dtsrun utility, with the same problem – it tried to run on the client.
Running the dtsrun utility from a stored procedure works pretty well… if the user has server administrator rights. For obvious reasons I’d rather my users not have those. I tried using the EXEC master..xp_cmdshell 'dtsrun /S /E /N' command in a stored procedure. It worked pretty well.
I tried setting up an SQL server job to run the DTS package, but the most frequently it could be run is every 1 minute. I’d like it to be updated on demand, not according to a schedule.
(I think it was on the sqldts.com website I read about a trick you could use that has the job look to a table, and if it finds a ‘yes’ value in a column, it executes the update. The client application updates that column to the ‘yes’ value when it wants an update run. I’ts a clever approach, and would work if the job could be setup to look every few seconds, instead of a minute.)
So does anyone know of a better approach? I’d like all the software required to run the DTS program be on the server, with minimal client footprint. Is there a way to run a program so it executes on the server from the client? I feel dumb asking that question because it seems like a fundamental tenet of client\server computing. Maybe Microsoft will make this easier in Yukon, but I can’t hold my breath that long.
Thanks in advance for any help.
Jimmy211