我需要知道给定的作业当前是否在Ms SQL 2008服务器上运行.因此,不要再次调用可能导致并发问题的相同工作.
在SQL Server Management Studio中,当我为SQL作业"查看历史记录"时,我只显示了作业的最后50次执行.
如何在服务器上创建SQL作业的每次执行时查看完整日志?
我有一个运行脚本任务的SSIS包(主要是和其他一些东西).脚本任务使用OleDB连接连接到Access数据库.这是Microsoft Jet 4.0连接.我安装了驱动程序.但它不会通过代理帐户在SQL Agent中运行.它可以直接从Visual Studio和包存储中运行.事实上,当我以代理所附带的特殊帐户登录时,它在这两个地方都运行良好.但是,当我通过SQL Server代理运行时,我得到了可怕的"未指定错误"OleDbException.
脚本任务的相关代码:
// class field
private string accessConnectionStringTemplate = "Data Source=\"{0}\";Provider=Microsoft.Jet.OLEDB.4.0;";
// in method that connects to database
Print(file, "Connection string: " + string.Format(accessConnectionStringTemplate, file.FileName));
// outputs: Data Source = "\Path\To\File";Provider=Microsoft.Jet.OLEDB.4.0"
using(access = new OleDbConnection(string.Format(accessConnectionStringTemplate, file.FileName))) {
access.Open();
// other code
}
Run Code Online (Sandbox Code Playgroud)
通过SQL代理作业历史记录的错误消息:
Started: 12:35:10 PM
Error: 2016-11-03 12:35:33.51
Code: 0x00000000
Source: Import Files Main
Description: Exception: Unspecified error
End Error
Error: 2016-11-03 12:35:33.51
Code: 0x00000000
Source: Import Files Main
Description: at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection …Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server 2005中的SQL Server代理作业执行存储过程.
这项工作一直持续到昨天.从昨天起,这项工作耗时超过1小时而不是2分钟.
我在SSMS中执行了存储过程,执行时间不到1分钟.
我无法弄清楚为什么它作为SQL Server代理作业执行时需要超过1小时?
我正在运行安装了Service Pack 1的SQL Server 2008 64位开发人员版.我有一个SQL Server代理作业.在这份工作中,我想得到自己工作的job_id.
在MSDN(http://msdn.microsoft.com/en-us/library/ms175575 ( v=SQL.100 ) .aspx)上,您可以找到在作业步骤中使用令牌的说明.哇,太棒了,这就是我要找的!! 只需使用(JOBID).
从SQL Server 2005 SP1开始,您必须使用像$(ESCAPE_NONE(JOBID))这样的宏.没问题.
但是如果你试试这个例子:
DECLARE @name NVARCHAR(128)
select @name = name from msdb.dbo.sysjobs where job_id = $(ESCAPE_SQUOTE(JOBID))
PRINT @name
Run Code Online (Sandbox Code Playgroud)
你得到:
'ESCAPE_SQUOTE'附近的语法不正确.(Microsoft SQL Server,错误:102)
好的,现在从头开始:
PRINT N'$(ESCAPE_SQUOTE(JOBID))'
Run Code Online (Sandbox Code Playgroud)
结果0xE33FE637C10B3C49A6E958BB3EF06959但JOB_ID是37E63FE3-0BC1-493C-A6E9-58BB3EF06959
的"N'"我觉得做一个隐式转换到(JOBID)的NVARCHAR ......
好吧,我想我要关心的数据类型( JOBID).在这本书中的"SQL Server 2008管理"一百六十九分之一百六十八页面上有同样使用(JOBID)的例子:
declare @jobid binary(16)
SELECT @jobid =Convert(Uniqueidentifier,$(ESCAPE_NONE(JOBID)))
Run Code Online (Sandbox Code Playgroud)
结果:
.附近有语法错误('(的Microsoft SQL Server,错误:102)
.我完全糊涂了,现在请能有人帮我一个好的建议或解决方案各式各样的帮助表示赞赏.
最好的问候Helmut
过去几周我一直遇到一个奇怪的问题.在我的两个不同的服务器上,sql server Agent自动停止工作,我所要做的就是重新启动代理并重新启动它.但是因为它停止工作,它会错过备份作业我和我在其上安排的其他几个作业Sql Agents.
任何其他服务器都不会发生这种情况,但它只发生在这两个特定的服务器上.
所有服务器都是SQL SERVER 2008 R2,数据中心版.64位.
有没有人遇到同样的问题,如果是的你做了什么来解决它?
我正在尝试将SQL Server代理作业中的变量值传递给SSIS包,但该变量中包含一个撇号,导致SQL Server代理作业失败
例如,在作业步骤属性的SQL Server代理中,我输入以下详细信息:
Property Path: \Package.Variables[User::VariableName].Properties[Value] Property
Value: Michael O'Callaghan.
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
我有两个在 Linux 上运行的 SQL Server 2019 实例。这两个实例都包含一个使用 AlwaysOn 可用性组同步的数据库。数据库中的数据是同步的,但问题是SQL代理作业不是数据库本身的一部分。
因此,当我在主副本上创建 SQL Server 代理作业时,此配置不会复制到辅助副本。因此,在创建每个工作之后,我总是必须去中学并在那里创建工作。我必须时刻记录我所做的所有改变。
使用可用性组时,是否有内置方法可以在 Linux 上自动执行 SQL Server 作业的跨副本同步?AG 副本之间的作业同步似乎应该已经由 SQL Server/SQL Server Agent 工具原生支持,但我没有从 Microsoft 找到任何内容,只有一个名为DBA Tools的第三方工具,我可以用它来编写自己的自动化脚本在 PowerShell 中。
sql-server high-availability sql-agent sql-agent-job availability-group
我们有一个在服务器A上运行的遗留Sql代理作业.作业步骤指向服务器B上的SSIS包.该包实际运行在哪个环境中?我们假设它在调用它的代理的环境中执行,但由于我们看到的一些观察(特别是与文件系统有关),我们不确定.
远程包有两个连接 - 文件系统连接和数据库连接.
操作系统是Windows Server 2012 R2.