SQL 作业无法运行 C#.net 控制台应用程序
本文关键字:net 控制台 应用程序 运行 作业 SQL | 更新日期: 2023-09-27 18:35:03
>我有一个简单的 excel 文件,其中包含以下代码:
Private Sub Workbook_Open()
MsgBox "Hello World!"
End Sub
我尝试运行 sql 作业来打开此 excel 文件,但它失败了,变得无响应。在谷歌搜索中,我找到了"为什么"SQL作业无法打开excel文件的原因SQL Server 代理上的作业未完成,但它在 BIDS 中完成?
因此,我想用 C# 创建一个简单的控制台应用程序,只需打开 excel 文件并运行我的宏。这是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
using System.Threading;
namespace T_OpenExcel
{
class Program
{
static void Main(string[] args)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
//Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(@"E:'data_extracts'TestHelloWorld.xlsm", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "'t", false, false, 0, true, 1, 0);
RunMacro(xlWorkBook, new Object[] { "TestHello" });
Thread.Sleep(5000);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
}
private static void RunMacro(Excel.Workbook xlWorkBook, object[] p)
{
//throw new NotImplementedException();
}
}
}
我可以在 IDE 中成功运行此代码。现在我想从 SSMS、sql 服务器 2008 中的 SQL 作业运行它。
我从我的 C# 项目(T_OpenExcel-->bin-->调试-->T_OpenExcel.exe(中抓取了T_OpenExcel.exe文件。我创建了一个 SQL 作业。以下是我的一些详细信息:
步骤名称:OpenHelloWorldExcel类型:操作系统运行方式:SQL Server 代理服务帐户命令: C:''Users''shress2''Documents''visual studio 2010''projects''T_OpenExcel''T_OpenExcel''bin''Debug''T_OpenExcel.exe
在运行此作业时,我得到以下状态启动作业"测试你好世界"状态成功执行作业"测试你好世界"状态错误
在查看历史记录时,它显示:消息以用户身份执行:GSOPS4''SYSTEM。未处理的异常:System.Runtime.InteropServices.COMException:Microsoft Excel 无法访问文件"E:''data_extracts''TestHelloWorld.xlsm"。有几个可能的原因:
文件名或路径不存在。 该文件正由另一个程序使用。 您尝试保存的工作簿与当前打开的工作簿同名。 在 Microsoft.Office.Interop.Excel.Workbooks.Open(字符串文件名、对象更新链接、对象只读、对象格式、对象密码、对象写入雷斯密码、对象忽略只读推荐、对象来源、对象分隔符、对象可编辑、对象通知、对象转换器、对象 AddToMru、对象本地、对象损坏加载( 在 T_OpenExcel.Program.Main(String[] args( 在 C:''Users''shress2''documents''Visual Studio 2010''projects''T_OpenExcel''T_OpenExcel''Program.cs:line 23. 进程退出代码 -532462766。 步骤失败。
我检查了E:''data_extracts''TestHelloWorld.xlsm目录,发现它可以工作。我确保我的 xlsm 文件没有被任何人使用。我不知道为什么它无法运行它。任何帮助将不胜感激。谢谢!
问题似乎是您在打开 Excel 文件时尝试显示消息框,但您正在自动化它,因此没有人可以单击消息框上的按钮。 代码的其余部分无法执行,因为文件正坐在那里等待某人单击该按钮。
在随后的运行中,服务器无法访问它,因为它仍然坐在那里,普通用户不可见,等待单击按钮。 因此错误。
简短版本:不要在无人参与的情况下运行的应用上获取用户输入。