Ejecutar DTS en el servidor...

15/10/2003 - 11:57 por cArLeS!! | Informe spam
Hola.

Tengo un DTS que contiene sólo un ActiveX Task con un
pequeño trozo de codigo VB-Script que abre un archivo
Excel, ejecuta una macro dentro de este y luego lo guarda
con otro nombre. Esto se hace de forma recursiva.

El problema es que cuando ejecuto este DTS directamente
(desde el Enterprise Manager, directamente sobre el
servidor) todo funciona ok. Pero cuando desde un cliente
lo ejecuto mediante el comando xp_cmdshell se queda
colgado (no hace nada, y al parecer el cuelgue se produce
al hacer SaveAs).

Alguien me puede ayudar?

El codigo del script es el siguiente:

'**********************************************************
************
' Visual Basic ActiveX Script
'**********************************************************
**************
'// Global variables
Dim oConn
Dim oRS_Data
Dim oRS_Data2

Function Main()

Dim app
Dim book

' open connection
Set oConn = CreateObject("ADODB.Connection")
With oConn
.Provider = "SQLOLEDB.1"
.Properties("Data Source").Value = "DWH-BCN"
.Properties("Initial Catalog").Value = "MSA"
.Properties("Integrated Security").Value = "SSPI"
.Open
End With


' open main recordset
Set oRS_Data = CreateObject("ADODB.Recordset")

oRS_Data.Open "SELECT * FROM [X_SBPRocess_SalesRep] ",
oConn,,2

oConn.Execute "TRUNCATE TABLE log "

set app = CreateObject("Excel.Application")
app.DisplayAlerts = False 'by CESCOLA

While Not oRS_Data.EOF
if oRS_Data(0) <> "" then
Set book = app.workbooks.Open
("X:\Reporting\SalesBudgetTemplateV001.01.xls")

oConn.Execute "INSERT INTO log (logmsg)
VALUES ('" & oRS_Data(0) & "')"

app.Run "SalesBudgetTemplateV001.01.xls!
RefreshData", DTSGlobalVariables("Year").Value, oRS_Data
(0), "DWH-BCN"

book.SaveAs DTSGlobalVariables("Path").Value
& "Template " & trim(oRS_Data(0))

book.Close
Set book = Nothing

end if
oRS_Data.movenext
Wend

app.DisplayAlerts = True 'by CESCOLA
app.Quit
Set app = Nothing

Main = DTSTaskExecResult_Success
End Function

Preguntas similare

Leer las respuestas

#1 Javier Loria
15/10/2003 - 15:14 | Informe spam
Hola cArLeS:
Me parece que el problema puede estar en el uso de la ruta
"X:\Reporting\...", ya que asumo que el servidor no tiene un dispositivo X,
sino mas bien que es un MAP a algun directorio compartido. Podrias cambiar
el texto por: \\Servidor\CarpetaCompartida\Reporting..., para ver si
funciona?

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
cArLeS!! escribio:
Hola.

Tengo un DTS que contiene sólo un ActiveX Task con un
pequeño trozo de codigo VB-Script que abre un archivo
Excel, ejecuta una macro dentro de este y luego lo guarda
con otro nombre. Esto se hace de forma recursiva.

El problema es que cuando ejecuto este DTS directamente
(desde el Enterprise Manager, directamente sobre el
servidor) todo funciona ok. Pero cuando desde un cliente
lo ejecuto mediante el comando xp_cmdshell se queda
colgado (no hace nada, y al parecer el cuelgue se produce
al hacer SaveAs).

Alguien me puede ayudar?

El codigo del script es el siguiente:

'**********************************************************
************
' Visual Basic ActiveX Script
'**********************************************************
**************
'// Global variables
Dim oConn
Dim oRS_Data
Dim oRS_Data2

Function Main()

Dim app
Dim book

' open connection
Set oConn = CreateObject("ADODB.Connection")
With oConn
.Provider = "SQLOLEDB.1"
.Properties("Data Source").Value = "DWH-BCN"
.Properties("Initial Catalog").Value = "MSA"
.Properties("Integrated Security").Value = "SSPI"
.Open
End With


' open main recordset
Set oRS_Data = CreateObject("ADODB.Recordset")

oRS_Data.Open "SELECT * FROM [X_SBPRocess_SalesRep] ",
oConn,,2

oConn.Execute "TRUNCATE TABLE log "

set app = CreateObject("Excel.Application")
app.DisplayAlerts = False 'by CESCOLA

While Not oRS_Data.EOF
if oRS_Data(0) <> "" then
Set book = app.workbooks.Open
("X:\Reporting\SalesBudgetTemplateV001.01.xls")

oConn.Execute "INSERT INTO log (logmsg)
VALUES ('" & oRS_Data(0) & "')"

app.Run "SalesBudgetTemplateV001.01.xls!
RefreshData", DTSGlobalVariables("Year").Value, oRS_Data
(0), "DWH-BCN"

book.SaveAs DTSGlobalVariables("Path").Value
& "Template " & trim(oRS_Data(0))

book.Close
Set book = Nothing

end if
oRS_Data.movenext
Wend

app.DisplayAlerts = True 'by CESCOLA
app.Quit
Set app = Nothing

Main = DTSTaskExecResult_Success
End Function
Respuesta Responder a este mensaje
#2 cArLeS!!
16/10/2003 - 09:27 | Informe spam
Hola!

Gracias por tu respuesta. De todas formas, este no es el
problema, ya que el DTS en modo diseño tb lo ejecuto
directamente sobre el servidor y funciona (de todas formas
lo he probado). Insisto en que el problema ocurre solo al
llamar al DTS usando xp_cmdshell. El problema es bastante
extraño, porque algunas veces, sin haber hecho cambios
(excepto poner, por ejemplo, que escriba en un log para
ver la evolucion, cosa que no cambia el proceso en si)
funciona, pero solo una vez, y luego vuelve a colgarse
hasta que 10 o 12 veces despues decide volver a funcionar
otra vez, y repetimos.

Tb he mirado que no sea problema de permisos.

Muchas gracias por ayudarme.

cArLeS!!

Hola cArLeS:
Me parece que el problema puede estar en el uso de la


ruta
"X:\Reporting\...", ya que asumo que el servidor no tiene


un dispositivo X,
sino mas bien que es un MAP a algun directorio


compartido. Podrias cambiar
el texto por: \\Servidor\CarpetaCompartida\Reporting...,


para ver si
funciona?

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
cArLeS!! escribio:
Hola.

Tengo un DTS que contiene sólo un ActiveX Task con un
pequeño trozo de codigo VB-Script que abre un archivo
Excel, ejecuta una macro dentro de este y luego lo




guarda
con otro nombre. Esto se hace de forma recursiva.

El problema es que cuando ejecuto este DTS directamente
(desde el Enterprise Manager, directamente sobre el
servidor) todo funciona ok. Pero cuando desde un cliente
lo ejecuto mediante el comando xp_cmdshell se queda
colgado (no hace nada, y al parecer el cuelgue se




produce
al hacer SaveAs).

Alguien me puede ayudar?

El codigo del script es el siguiente:

'*******************************************************




***
************
' Visual Basic ActiveX Script
'*******************************************************




***
**************
'// Global variables
Dim oConn
Dim oRS_Data
Dim oRS_Data2

Function Main()

Dim app
Dim book

' open connection
Set oConn = CreateObject("ADODB.Connection")
With oConn
.Provider = "SQLOLEDB.1"
.Properties("Data Source").Value = "DWH-BCN"
.Properties("Initial Catalog").Value = "MSA"
.Properties("Integrated Security").Value




= "SSPI"
.Open
End With


' open main recordset
Set oRS_Data = CreateObject("ADODB.Recordset")

oRS_Data.Open "SELECT * FROM




[X_SBPRocess_SalesRep] ",
oConn,,2

oConn.Execute "TRUNCATE TABLE log "

set app = CreateObject("Excel.Application")
app.DisplayAlerts = False 'by CESCOLA

While Not oRS_Data.EOF
if oRS_Data(0) <> "" then
Set book = app.workbooks.Open
("X:\Reporting\SalesBudgetTemplateV001.01.xls")

oConn.Execute "INSERT INTO log (logmsg)
VALUES ('" & oRS_Data(0) & "')"

app.Run "SalesBudgetTemplateV001.01.xls!
RefreshData", DTSGlobalVariables("Year").Value,




oRS_Data
(0), "DWH-BCN"

book.SaveAs DTSGlobalVariables("Path").Value
& "Template " & trim(oRS_Data(0))

book.Close
Set book = Nothing

end if
oRS_Data.movenext
Wend

app.DisplayAlerts = True 'by CESCOLA
app.Quit
Set app = Nothing

Main = DTSTaskExecResult_Success
End Function




.

Respuesta Responder a este mensaje
#3 Mauricio Sthandier R.
16/10/2003 - 15:41 | Informe spam
pero el xp_cmdshell lo ejecutas desde un cliente como el Query Analyzer en
otro PC ?
usas Seguridad Integrada, tendrá permisos de escritura la cuenta que usas
para llamar ?
otra consulta porqué abres el Recordset con ", ,2". Estás usando un bloqueo
pesimista y por lo que se ve es tu recordset es de sólo lectura.

El app.open y el app.run en medio del ciclo me da la idea que no rinden muy
bien... hasta cuantos vueltas da un ciclo normal ?


"...
sure you swear you are able to
lift from the unwilling patience
and heal gently the wounded and therefore annoying heart
kissing goodbye its pride
so quiet she would not ever decide ?"
"cArLeS!!" escribió en el mensaje
news:0b8e01c393b7$060cb460$
Hola!

Gracias por tu respuesta. De todas formas, este no es el
problema, ya que el DTS en modo diseño tb lo ejecuto
directamente sobre el servidor y funciona (de todas formas
lo he probado). Insisto en que el problema ocurre solo al
llamar al DTS usando xp_cmdshell. El problema es bastante
extraño, porque algunas veces, sin haber hecho cambios
(excepto poner, por ejemplo, que escriba en un log para
ver la evolucion, cosa que no cambia el proceso en si)
funciona, pero solo una vez, y luego vuelve a colgarse
hasta que 10 o 12 veces despues decide volver a funcionar
otra vez, y repetimos.

Tb he mirado que no sea problema de permisos.

Muchas gracias por ayudarme.

cArLeS!!

Hola cArLeS:
Me parece que el problema puede estar en el uso de la


ruta
"X:\Reporting\...", ya que asumo que el servidor no tiene


un dispositivo X,
sino mas bien que es un MAP a algun directorio


compartido. Podrias cambiar
el texto por: \\Servidor\CarpetaCompartida\Reporting...,


para ver si
funciona?

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
cArLeS!! escribio:
Hola.

Tengo un DTS que contiene sólo un ActiveX Task con un
pequeño trozo de codigo VB-Script que abre un archivo
Excel, ejecuta una macro dentro de este y luego lo




guarda
con otro nombre. Esto se hace de forma recursiva.

El problema es que cuando ejecuto este DTS directamente
(desde el Enterprise Manager, directamente sobre el
servidor) todo funciona ok. Pero cuando desde un cliente
lo ejecuto mediante el comando xp_cmdshell se queda
colgado (no hace nada, y al parecer el cuelgue se




produce
al hacer SaveAs).

Alguien me puede ayudar?

El codigo del script es el siguiente:

'*******************************************************




***
************
' Visual Basic ActiveX Script
'*******************************************************




***
**************
'// Global variables
Dim oConn
Dim oRS_Data
Dim oRS_Data2

Function Main()

Dim app
Dim book

' open connection
Set oConn = CreateObject("ADODB.Connection")
With oConn
.Provider = "SQLOLEDB.1"
.Properties("Data Source").Value = "DWH-BCN"
.Properties("Initial Catalog").Value = "MSA"
.Properties("Integrated Security").Value




= "SSPI"
.Open
End With


' open main recordset
Set oRS_Data = CreateObject("ADODB.Recordset")

oRS_Data.Open "SELECT * FROM




[X_SBPRocess_SalesRep] ",
oConn,,2

oConn.Execute "TRUNCATE TABLE log "

set app = CreateObject("Excel.Application")
app.DisplayAlerts = False 'by CESCOLA

While Not oRS_Data.EOF
if oRS_Data(0) <> "" then
Set book = app.workbooks.Open
("X:\Reporting\SalesBudgetTemplateV001.01.xls")

oConn.Execute "INSERT INTO log (logmsg)
VALUES ('" & oRS_Data(0) & "')"

app.Run "SalesBudgetTemplateV001.01.xls!
RefreshData", DTSGlobalVariables("Year").Value,




oRS_Data
(0), "DWH-BCN"

book.SaveAs DTSGlobalVariables("Path").Value
& "Template " & trim(oRS_Data(0))

book.Close
Set book = Nothing

end if
oRS_Data.movenext
Wend

app.DisplayAlerts = True 'by CESCOLA
app.Quit
Set app = Nothing

Main = DTSTaskExecResult_Success
End Function
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida