如何安排在后台和用户模拟下运行的任务(或作业)

时间:2015-08-08 09:44:17

标签: c# sql-server scheduled-tasks background-process

我有这种情况,我需要用户能够登录到计算机并安排一些任务(如运行查询并获取结果并保存它们)以供将来运行。

让我举一个例子。例如,我有一项服务。用户(User1)(域用户)连接到此服务并将SQL查询,服务器名称和数据库名称发送到我的服务调用。这项服务需要做的是创建一个任务,该任务将在当天的某个未来时间运行(可能在夜晚,即:晚上11点)。在晚上11点运行查询时,此任务将连接到先前传递的服务器名称和数据库名称上的SQL,然后触发查询,然后将结果保存在excel中。运行时的查询应该使用用户(User1)上下文,这样如果有任何受限制的权限应该遵守。如果我使用MDX查询,则需要相同的内容。

部署此服务的服务器是域加入的计算机。该服务目前在网络服务上工作,我可以看到主叫用户。我不想在服务器中添加所有用户作为管理员。

我尝试动态创建计划任务,在能够访问本地策略(以批处理服务登录)和访问C:\ Windows \ system32 \ tasks下的文件夹到组后,我能够成功完成这项任务。这类用户,所有用户都是此组的一部分)。选项"运行任务时,使用以下用户帐户"它被设置为调用者用户(User1),但我无法设置选项"运行用户是否登录"。此选项是必需的,因为当我需要触发查询时,它应该在User1下工作,而user1将永远不会登录到该机器。

任何建议都会有所帮助。如果任何其他方法更适合我的要求,我也愿意接受计划任务方法。

感谢。 Girija Shankar Beuria

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是创建一个存储过程来执行您想要完成的任务。在SP中,您可以执行AS所需的登录/用户。使用SQL代理计划任务。这些都很容易做到,SQL Server在线书籍有详细的信息和示例,所以只需查看它。

顺便说一句,我假设你是实例上的DBA,因此你有权在任何登录/用户上运行EXECUTE AS。