Executar programas do servidor

14/02/2010

Como eu posso executar programas no servidor usando asp.net2? Quero rodar um programa que faz dts no sqlserver.
Ademilso Peres

Ademilso Peres

Curtidas 0

Respostas

Luiz Maia

Luiz Maia

14/02/2010

Ademilso,   Tem varias formas de invocar um DTS, uma delas é usando um Stored Procedure, do qual vc pode chamar o pacote DTS dirtetamente.   Outra, mais usada, é usando a dll dtspkg.dll, que deve ser registrada no servidor, isto pode causar alguns problemas, pois em HOSTS de hospedagem não sei te informar se ja existe esta DLL devidamente registrada.   Para isto, faça o seguinte: Copie a DLL dtspackage.dll para o servidor web e registre-a la. Adicione a referencia DTSPakhage  no VS.   Depois use o seguinte codigo (esta em VBnet):   Dim objDTS As New DTS.Package
Dim objStep As DTS.Step
Dim sSrc, sDsc As String
Dim dErr As Double

'Glb_SrvName = "Server"
'glb_username = "Admin"
'Glb_PassWd = "Admin123"

GetConnectionInfo()

'objDTS.DTSSQLStgFlag_Default
Dim obj As Object
obj = DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default


Try
objDTS.LoadFromSQLServer(Glb_SrvName, glb_username, Glb_PassWd, 0, , , , "DTSToExecute")

For Each objStep In objDTS.Steps
objStep.ExecuteInMainThread = True
Next
objDTS.Execute()

For Each objStep In objDTS.Steps
If objStep.ExecutionResult = DTS.DTSStepExecResult.DTSStepExecResult_Failure Then
objStep.GetExecutionErrorInfo(dErr, sSrc, sDsc)
Response.Write(sSrc & vbCrLf & sDsc)
End If
Next

objDTS = Nothing

lblMsg.Visible = True
lblMsg.Text = " Data Updated Successfully "
Catch ex As Exception
lblMsg.Visible = True
lblMsg.Text = ex.Message
Exit Sub
End Try     Abraços Qualquer duvida me diga, ok?   Att Luiz Maia
GOSTEI 0
Ademilso Peres

Ademilso Peres

14/02/2010

Talvez pra mim chamar via stored procedures seja mais facil. Mas tambem gostaria de saber se tem jeito de rodar qualquer programa por exemplo um notepad.
GOSTEI 0
Ademilso Peres

Ademilso Peres

14/02/2010

Como posso chamar via stored procedure?
GOSTEI 0
Luiz Maia

Luiz Maia

14/02/2010

Ademilso, veja este exemplo abaixo:   IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'DtsRun')
      BEGIN
            PRINT 'Dropping Procedure DtsRun'
            DROP  Procedure  DtsRun
      END

GO

PRINT 'Creating Procedure DtsRun'
GO
CREATE Procedure DtsRun
      /* Param List */
      @ServerName      varchar(30),
      @UserName      varchar(30),
      @Password      varchar(30),
      @DtsName      varchar(30),
      @DtsPassword            varchar(30),
      @GlobleVariableList      varchar(500) --"/A <GlobalVariableName>:<datatypeid>=<GlobalVariableValue>"
      WITH ENCRYPTION      
AS

      DECLARE @ERROR int      -- For Hold Error Number
      DECLARE @CMD      varchar(1000)      -- Dts Run Command
      
BEGIN
      -- Set as No Error
      SET @ERROR = 0
      
      IF( @GlobleVariableList IS NULL )
      BEGIN
            -- Without Globle Variable
            SET @CMD = 'dtsrun /S '+@ServerName+' /U '+@UserName+' /P '+@Password+' /N '+@DtsName+' /M '+ @DtsPassword
      
      END
      ELSE
      BEGIN
            -- With Globle Variable
            SET @CMD = 'dtsrun /S '+@ServerName+' /U '+@UserName+' /P '+@Password+' /N '+@DtsName+' /M '+@DtsPassword+' '+@GlobleVariableList+''
            
      END
      
      EXECUTE @ERROR = master..xp_cmdshell @CMD
      -- + Error Checking
      SELECT @ERROR = COALESCE( NULLIF ( @ERROR, 0 ), @@ERROR )
      IF @ERROR <> 0 BEGIN ROLLBACK TRANSACTION RETURN @ERROR END
      
END
      -- Return Error
      RETURN @ERROR

GO

GRANT EXEC ON DtsRun TO PUBLIC

GO     Com esta SP acima (generica) vc consegue executar qualquer DTS passando os parametros necessarios, como nome do DTS, servidor, senha e usuario e tb parametros de entrada do DTS (GlobleVariableList).   Qualquer duvida, me avise, ok?   Aguardo Att LUiz Maia
GOSTEI 0
Ademilso Peres

Ademilso Peres

14/02/2010

E como eu poderia executar qualquer programa do servidor atraves do site? tem jeito? 
GOSTEI 0
Luiz Maia

Luiz Maia

14/02/2010

Que tipo de programa você deseja executar no servidor? Se for um DTS mesmo, basta executar a SP abaixo que qual de passei.   Att Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

14/02/2010

E ai, aguardo sua resposta....   Abraços Att Luiz Maia
GOSTEI 0
Ademilso Peres

Ademilso Peres

14/02/2010

Vou tentar dessa forma. 
GOSTEI 0
Luiz Maia

Luiz Maia

14/02/2010

Ok. Fico no aguardo...   Abraços Att Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

14/02/2010

E ai Ademilso, resolveu?   Aguardo...   Abraços Att Luiz Maia
GOSTEI 0
POSTAR