sql server 如何执行一项计划任务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 如何执行一项计划任务相关的知识,希望对你有一定的参考价值。

我需要在半夜4点钟的时候把一张表的数据完全转移到另一张表中去(这两张表的结果已经设置完毕完全一样) 该怎么进行操作?

1、打开Sql Server数据库,在管理中找到维护计划功能,右击维护计划选择维护计划向导。如图所示:

2、打开维护计划向导后,在第一个步骤下输入计划名称。

3、输入完计划名称后,点击右下角的更改按钮,这里是配置计划执行时间的地方,可以选择执行的周期,时间及其它相关内容,如图所示:

4、计划任务的时间设置好后,点击确定并进行下一步,在这一步,可以选择计划的任务,例如:备份完整数据库、差异数据库、日志等,勾选要做的任务,点击下一步。

5、这一步,需要选择要执行计划的数据库,及数据库备份的路径,如图所示:

6、计划任务名称、时间、任务项、数据库及路径都设置好后,点击完成,该计划任务就以设定完成了,到时会按照你所设置的时间开始执行操作了。

参考技术A 1、你必须开启代理服务sql server agent
2、在企业管理器里,打开“管理—>sqlserver代理—>作业”,新增作业,新建“步骤”,在步骤里填入你要转移的SQL语句到“命令”框里。然后新建“调度”。
3、启动作业。
OK,自己试一下。
另外,如果你转移的数据量比较大,还可以通过建立SQLSERVER数据复制的包来解决,然后在“步骤”里调用这个包就可以。SQLSERVER的数据复制技术,是多线程的,处理起来比较快。很久没试了具体内容有点忘了。本回答被提问者采纳
参考技术B 可以用sqlserver的作业功能,具体用法可以看这个
http://hi.baidu.com/procedure/blog/item/7f959fb10d76f95d092302dd.html

您如何在 SQL Server 中计算每天计划中的任务数?

【中文标题】您如何在 SQL Server 中计算每天计划中的任务数?【英文标题】:How do you count number tasks in schedule per day in SQL Server? 【发布时间】:2016-10-22 17:25:12 【问题描述】:

我正在尝试在 SQL Server 中创建一个查询,该查询将返回每天的任务数。如果任务的开始日期和完成日期在同一天,那么它应该只在计数中加一。

这是一个小的示例数据集:

+----+------------+-------------+
| ID | Start_Date | Finish_Date |
+----+------------+-------------+
|  1 | 24-Oct-16  | 24-Oct-16   |
|  2 | 24-Oct-16  | 26-Oct-16   |
|  3 | 25-Oct-16  | 26-Oct-16   |
|  4 | 26-Oct-16  | 27-Oct-16   |
|  5 | 26-Oct-16  | 28-Oct-16   |
+----+------------+-------------+

这是预期的结果:

+-----------+----------------+
|   Date    | Count_Of_Tasks |
+-----------+----------------+
| 24-Oct-16 |              2 |   
| 25-Oct-16 |              2 |
| 26-Oct-16 |              4 |
| 27-Oct-16 |              2 |
| 28-Oct-16 |              1 |
+-----------+----------------+

任何人都可以创建一个示例查询来计算每天的任务数吗?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您需要一个calendar 表来执行此操作

我使用Recursive CTE 即时生成开始和结束日期范围之间的日期。但最好在数据库中创建一个Calendar 表。在这样的查询中会很有帮助

;with data as
(
select * from (
VALUES
    (1, '2016-10-24 00:00:00', '2016-10-24 00:00:00'),
    (2, '2016-10-24 00:00:00', '2016-10-26 00:00:00'),
    (3, '2016-10-25 00:00:00', '2016-10-26 00:00:00'),
    (4, '2016-10-26 00:00:00', '2016-10-27 00:00:00'),
    (5, '2016-10-26 00:00:00', '2016-10-28 00:00:00')) tc ([ID], [Start_Date], [Finish_Date])
),calendar
     AS (SELECT dates = CONVERT(DATETIME, '24-Oct-16') -- Min Start_Date 
         UNION ALL
         SELECT dates = Dateadd(DAY, 1, dates)
         FROM   calendar
         WHERE  dates < '28-Oct-16') -- Max Finish_Date 
SELECT c.dates,
       Count(s.Start_Date) AS Count_Of_Tasks
FROM   calendar c
       LEFT JOIN data s
              ON c.dates between s.Start_Date and s.Finish_Date
Group by c.dates

结果:

╔═════════════════════════╦════════════════╗
║          dates          ║ Count_Of_Tasks ║
╠═════════════════════════╬════════════════╣
║ 2016-10-24 00:00:00.000 ║              2 ║
║ 2016-10-25 00:00:00.000 ║              2 ║
║ 2016-10-26 00:00:00.000 ║              4 ║
║ 2016-10-27 00:00:00.000 ║              2 ║
║ 2016-10-28 00:00:00.000 ║              1 ║
╚═════════════════════════╩════════════════╝

【讨论】:

效果很好,非常感谢!附带说明一下,由于我的数据集有多大,我必须在查询末尾添加 OPTION (maxrecursion 0)。它一直给出错误,“在语句完成之前,最大递归 100 已用完”。 @user3174038 - 是的..如果开始日期和结束日期之间的差距很大,您必须添加OPTION (maxrecursion 0)【参考方案2】:

这很棘手。一种方法是分解数据并使用运行总和重新聚合:

select dte,
       sum(sum(inc)) over (order by dte) as total
from ((select start_date as dte, 1 as inc
       from example
      ) union all
      (select dateadd(day, 1, finish_date), -1 as inc
       from example
      )
     ) e
group by dte

【讨论】:

【参考方案3】:
SELECT DISTINCT(startdate),
       (
           SELECT COUNT(*)
           FROM   tasks AS b
           WHERE  a.startdate BETWEEN b.startdate AND b.enddate
       )
FROM   tasks AS a 
UNION
SELECT DISTINCT(enddate),
       (
           SELECT COUNT(*)
           FROM   tasks AS b
           WHERE  a.enddate BETWEEN b.startdate AND b.enddate
       )
FROM   tasks AS a 

【讨论】:

以上是关于sql server 如何执行一项计划任务的主要内容,如果未能解决你的问题,请参考以下文章

您如何在 SQL Server 中计算每天计划中的任务数?

如何查看mysql定时任务计划

SQL Server - 日志中没有维护计划任务名称

定时任务|开机启动Windows Server 2008/2012 计划任务配置(任务计划程序)每分钟执行BAT

Windows Server 2008 计划任务配置(任务计划程序)每分钟执行BAT

定时任务|开机启动Windows Server 2008/2012 计划任务配置(任务计划程序)每分钟执行BAT