【问题标题】:Excel VBA - Executing a job within SQL Server via a macroExcel VBA - 通过宏在 SQL Server 中执行作业
【发布时间】:2012-06-23 15:17:28
【问题描述】:

我有一个存储在数据库中的作业,计划每天运行。但有时需要在任何给定时间执行此作业以查看最新数据(我使用的是 SQL Server Management Studio 2008)。

作业本身只是从包含实时数据的视图中获取数据并将其放入一个表中,然后该表将用作 excel 文件的数据源。执行作业会删除并使用新数据重新创建表。

在 excel (2010) 中,我希望有一个“按钮”,按下该按钮将执行作业,然后在 excel 中的数据选项卡上点击刷新,然后将使用新数据更新工作表上的数据。

我的问题是:如何从 excel 宏中执行这项工作?

【问题讨论】:

    标签: sql-server excel vba


    【解决方案1】:
    Private Sub CmdRunJob_Click()
       Dim con As Object
       Set con = CreateObject("ADODB.Connection")
       con.Open = "DRIVER={SQL Server};SERVER=YourServer;" & _
           "USER=YourUser;PASSWORD=YourPassword;"
       con.Execute "exec msdb.dbo.sp_start_job 'YourJob'"
    End Sub
    

    【讨论】:

    • 这似乎可行,但是当我运行宏时出现权限错误(我传递的凭据是正确的)。对象 sp_start_job 的执行权限被拒绝。有什么想法吗?
    • 凭据必须具有启动作业的权限。任何sysadmin 帐户都可以使用。否则,请参阅these DBA answers
    • 我尝试使用的帐户确实是系统管理员帐户。似乎只能在本地 PC 上工作,当我尝试从其他任何地方执行作业时,我只会遇到同样的错误。我会继续努力...
    • 该示例使用 SQL 登录。要使用您的 Windows 凭据登录,请将 USER=YourUser;PASSWORD=YourPassword; 替换为 Integrated Security=SSPI;
    • 这似乎行得通,但如果我想“在步骤...开始工作”怎么办?
    【解决方案2】:

    您创建了一个将数据从视图移动到表的 SP。 然后修改它按计划执行该 SP 的作业。 然后在 Excel 宏中,您可以只使用该 SP 来更新数据。

    或查看example 如何从 VBScript 运行作业

    【讨论】:

      【解决方案3】:

      您可以使用 SQLDMO.SQLServer 来执行您的作业。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多