从Asp.net应用程序执行SSIS

Liz*_*ack 3 asp.net ssis

我正在尝试运行一个简单的SSIS包(将数据从外部文件夹复制到SQL 2005表中).我想从Asp.net 2.0应用程序运行此包.有什么建议?

我搜索了许多不同的博客和网站,但所有这些方法都导致失败(通常是因为安全问题)

dtexec/FILE"包名"等

EXEC master..xp_cmdshell @cmd(据说是一个非常糟糕的主意)

sp_start_job

app.LoadPackage(@"\ servername\sharename\Package1.dtsx",null)

在此先感谢您提供给我的任何帮助.

Eri*_*ric 5

那么,杰克,你所列出的是一个半正确答案的大杂烩.

有很多方法可以启动SSIS包.但是,最好的方法可能就是sp_start_job.现在,这意味着您已经创建了一个将运行SSIS包的作业.

很多时候,这只小狗由于凭证问题而失败.也就是说,您正在尝试将血腥的东西作为SQL Server代理帐户(又名LOCAL SYSTEM)运行,这对于执行能力来说并不是一个好兆头.因此,您需要创建一个Credential,然后创建一个代理作为运行的作业.因此,您需要做的是:

CREATE CREDENTIAL MyCred WITH IDENTITY 'CORP\MyUser', SECRET = '<PassGoesHere>'
GO
sp_add_proxy @proxy_name='MyProxy', @enabled = 1, @credential = 'MyCred'
GO
sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy', @subsystem_id = 3
GO
sp_add_job @job_name = 'MyJob', @enabled = 1
GO
sp_add_jobstep 
    @job_name = 'MyJob', 
    @step_name = 'Run SSIS Package', 
    @subsystem = 'CMDEXEC', 
    @command = 'dtexec /F C:\Path\To\Package.dtsx', 
    @proxy_name = 'MyProxy'
Run Code Online (Sandbox Code Playgroud)

有意义的文档:

  1. CREATE CREDENTIAL
  2. sp_add_proxy
  3. sp_grant_proxy_to_subsystem
  4. sp_add_job
  5. sp_add_jobstep