天道酬勤,学无止境

sql-server-agent

SQL Server 代理作业超时(SQL Server Agent Job Timeout)

问题 我刚刚让一个预定的 SQL Server 作业运行的时间比正常时间长,我真的可以设置超时以在一定时间后停止它。 我可能对此有点盲目,但我似乎找不到设置工作超时的方法。 有谁知道如何做到这一点? 谢谢 回答1 作为夜间作业处理子系统的一部分,我们做一些类似于下面的代码——它实际上比这更复杂; 例如,我们正在处理多个相互依赖的作业集,并从配置表中读取作业名称和超时值 - 但这抓住了这个想法: DECLARE @JobToRun NVARCHAR(128) = 'My Agent Job' DECLARE @dtStart DATETIME = GETDATE(), @dtCurr DATETIME DECLARE @ExecutionStatus INT, @LastRunOutcome INT, @MaxTimeExceeded BIT = 0 DECLARE @TimeoutMinutes INT = 180 EXEC msdb.dbo.sp_start_job @JobToRun SET @dtCurr = GETDATE() WHILE 1=1 BEGIN WAITFOR DELAY '00:00:10' SELECT @ExecutionStatus=current_execution_status, @LastRunOutcome=last_run_outcome

2021-11-26 14:32:19    分类:技术分享    sql-server   sql-server-2005   timeout   scheduling   sql-server-agent

Create SQL Server Agent jobs programatically

I want to create SQL Server Agent jobs programmatically. I am using the following code, while running it doesn't throw any error but when I check SQL Server Agent I don't see any jobs. So question 1: is this the right way to create a job in msdb from etgv125p (my database) database? When I use connectionString with Initial Catalog=msdb, I am getting an error The EXECUTE permission was denied on the object 'CreateSQLAgentjobs', database 'msdb', schema 'dbo' Question 2: what type of credentials do I need to have? I am already admin. Code: static void Main(string[] args) { string connetionString

2021-11-26 09:51:33    分类:问答    c#   sql-server   sql-server-agent

自动创建 SQL Server 作业(Create SQL Server job automatically)

问题 我正在编写 SQL Server 部署脚本,它会在特定的 SQL Server 服务器/实例上自动创建 SQL Server 作业。 我发现我可以通过使用脚本作业作为 => 创建到来提取可用于自动创建 SQL Server 作业的 sql 语句。 我的困惑是,我发现数据库名称和所有者帐户名称在生成的 sql 脚本中是硬编码的。 当我在另一台计算机上使用sqlcmd执行sql脚本进行部署时,数据库名和Owner账户名可能不同,所以我需要一种方法将数据库名和Owner账户名传递给SQL Server作业创建脚本和让脚本使用提供的数据库名称和所有者帐户名称(硬编码除外)。 任何想法如何做到这一点? 回答1 您需要动态创建作业脚本,然后执行它。 您可以尝试类似以下内容或将其更改为带有作业所有者和数据库名称输入参数的存储过程。 DECLARE @JobName VARCHAR(20) --Job Name DECLARE @Owner VARCHAR(200) --Job Owner DECLARE @DBName VARCHAR(200) --Database Name DECLARE @JobCode VARCHAR(4000) --Create Statement for Job SET @JobName = 'Test2' SET @Owner = 'BrianD' SET

2021-11-25 08:56:19    分类:技术分享    sql   sql-server   sql-server-2008   sql-server-agent

Create SQL Server job automatically

I am writing SQL Server deployment scripts which create SQL Server job automatically on a specific SQL Server server/instance. I have found that I can extract the sql statement which can be used to create SQL Server job automatically by using script job as => Create To. My confusion is that, I find the database name and Owner account name are hardcoded in the sql scripts generated. When I am using sqlcmd to execute the sql scripts on another computer to perform deployment, the database name and Owner account name may be different, so I need a way to pass the database name and Owner account

2021-11-20 04:44:31    分类:问答    sql   sql-server   sql-server-2008   sql-server-agent

SQL Server Agent Job Timeout

I have just had a scheduled SQL Server job run for longer than normal, and I could really have done with having set a timeout to stop it after a certain length of time. I might be being a bit blind on this, but I can't seem to find a way of setting a timeout for a job. Does anyone know the way to do it? Thanks

2021-11-19 10:08:27    分类:问答    sql-server   sql-server-2005   timeout   scheduling   sql-server-agent

在每个月的第 2 个和第 4 个星期四运行的重复 SQL 作业(Reoccurring SQL job to run on the 2nd and 4th Thursday of every month)

问题 我需要在每个月的第二个和第四个星期四运行的工作。 我知道我可以设置一个工作每两周运行一次,但是当一个月最终达到五周时,这种逻辑就不起作用了。 是否可以使用 SQL Server Agent Schedule 进行设置? 如果没有,有人推荐另一种方法吗? 回答1 为作业创建两个计划,一个在第二个星期四运行,一个在第四个星期四运行。 在 Scheduler 的Frequency标题下,将Occurs下拉菜单更改为Monthly以获取您需要的选项。

2021-10-30 03:22:37    分类:技术分享    sql   sql-server   sql-server-agent

SSIS 包从目录运行,而不是从 SQL Server 代理(同一用户)(SSIS Package Runs from Catalog, not from SQL Server Agent (Same User))

问题 我有一个为 SQL Server 2012 开发的 SSIS 包,它使用脚本组件打开 Excel 工作簿并执行宏。 这个包在 Visual Studio 中运行,我能够部署到 SQL Server 2012。 在 SQL Server 中,我可以通过从 Integration Services 目录中选择包并右键单击 --> 执行...(使用 32 位运行时)来执行该包。 我知道这会以我登录到服务器的用户身份执行包。 在这种情况下,包成功执行。 当我创建 SQL Server 代理作业以每晚执行包时,我创建了一个代理用户,其域用户与我用来登录 SQL 服务器的域用户相同,但失败并出现以下错误: 任务上的 Execute 方法返回错误代码 0x80070002(无法加载文件或程序集“Microsoft.VisualStudio.Tools.Applications,版本=11.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。)。 Execute 方法必须成功,并使用“out”参数指示结果。 我已确保 SQL Server 代理作业也使用 32 位运行时。 由于代理用户也是我登录 SQL Server 的用户,因此我认为这不是权限问题(至少对于该用户而言)。 SQL Server

2021-10-25 03:01:47    分类:技术分享    sql-server   ssis   etl   sql-server-agent

SQL Server:如何每小时运行一次查询,并将结果存储在表中? 更新时替换它们(SQL Server: How to run a query every hour, and store results in a table? Replace them on update)

问题 我有一个需要 5 分钟的繁重查询,我希望将其结果存储在一个表中,该表将由后端查询。 此外,表格应该每小时更新一次,并用新数据完全替换表格的内容。 我找到了这个服务器代理解决方案,根据我的理解,我应该这样做: 创建结果表。 创建一个存储过程,用于删除结果表数据、运行 5 分钟查询并插入新数据。 创建按时间间隔运行该过程的服务器代理作业。 这是最佳方式吗? 这是有问题的查询。 它超过一吨行,我认为这是主要的速度冲击器。 WITH salesCTE AS ( select concat(year(m.addate), '-', format(m.addate, 'MM')) AS ym, year(m.addate) as y, format(m.addate, 'MM') as m, sum(M.anvalue) as salesRev FROM tHE_Move m WHERE ( RIGHT(LEFT(M.acKey,5),3) = '300' OR RIGHT(LEFT(M.acKey,5),3) = '305' OR RIGHT(LEFT(M.acKey,5),3) = '319' OR RIGHT(LEFT(M.acKey,5),3) = '380' OR RIGHT(LEFT(M.acKey,5),3) = '355' OR RIGHT(LEFT(M.acKey,5)

2021-10-24 14:03:05    分类:技术分享    sql   sql-server   stored-procedures   sql-server-agent

Reoccurring SQL job to run on the 2nd and 4th Thursday of every month

I need a job to run on the 2nd and 4th Thursday of every month. I know I can set up a job to run every two weeks but that logic doesn't work when a month eventually hits a five week span. Is it possible to set this up using the SQL Server Agent Schedule? If not, does anyone recommend another method?

2021-10-23 18:09:27    分类:问答    sql   sql-server   sql-server-agent

SQL Server: How to run a query every hour, and store results in a table? Replace them on update

I have this taxing query that takes 5 minutes, and I'd like to have its results stored in a table, which will be queried by a backend. Also, the table should be updated every hour and completely replace the table's content with the new data. I found this Server Agent solution, and from my understanding I should to this: Create the results table. Create a stored procedure that drops the results table data, runs the 5 min query, and inserts the new data. Create the Server Agent job that runs the procedure in intervals. Is this the optimal way? Here is the query in question. It goes over a ton of

2021-10-20 06:11:59    分类:问答    sql   sql-server   stored-procedures   sql-server-agent