标签: sql-server-agent

使用不同的连接字符串执行 T-SQL 作业

是否可以在指定自定义应用程序名称的同时从 SQL 代理作业执行存储过程,类似于在连接字符串中指定应用程序名称?

我想这样做的原因是为了避免数据库上的触发器专门区分连接字符串使用的应用程序名称。

我知道您可以使用不同的连接字符串执行集成包,但我希望这也适用于 T-sql 作业。

sql-server sql-server-agent

3
推荐指数
1
解决办法
3253
查看次数

使用 SMO 运行 PowerShell 脚本时缺少程序集

我编写了一个脚本,该脚本以数据库名称、恢复的数据库名称、备份源、数据文件位置和日志文件位置为参数,并在 SQL Server 实例上执行数据库恢复。当从 PowerShell ISE 运行时,脚本工作正常,但是当从 PowerShell 控制台运行时,它会抛出缺少程序集错误,或者当以 CmdExec 或 PowerShell 类型通过 SQL 代理作业运行时出现错误时,术语未被识别为 cmdle 的名称。

我试图在脚本中使用 Add-Type 添加程序集的路径,但没有名为 Microsoft.SqlServer.Management.Smo.Server、Microsoft.SqlServer.Management.Smo.Restore... 等的程序集。

作为 PS newb,我没有想法。任何建议,如何解决这个问题以便能够在 SQL 代理作业步骤中运行这个脚本?

我正在使用命令在 ISE 和控制台中执行脚本

.\RestoreDB_Script.ps1 -DatabaseName TestDB -NewDatabaseName TestDB_new -SourceDir V:\Backup -DataDir D:\Data -LogDir L:\Log
Run Code Online (Sandbox Code Playgroud)

在 SQL 代理作业中执行脚本

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile  -ExecutionPolicy Bypass -Command C:\Script\RestoreDB_Script.ps1 -DatabaseName TestDB -NewDatabaseName TestDB_new -SourceDir V:\Backup -DataDir D:\Data -LogDir L:\Log
Run Code Online (Sandbox Code Playgroud)

脚本

Param(
    [parameter(Mandatory=$true)]
    [String]
    $DatabaseName,
    [parameter(Mandatory=$true)]
    [String]
    $NewDatabaseName,
    [parameter(Mandatory=$true)]
    [String]
    $SourceDir,
    [parameter(Mandatory=$true)]
    [String]
    $DataDir,
    [parameter(Mandatory=$true)]
    [String]
    $LogDir)

$file = $DatabaseName+".bak" …
Run Code Online (Sandbox Code Playgroud)

powershell smo sql-server-agent windows-server sql-server-2016

3
推荐指数
1
解决办法
8959
查看次数

即使在重新启动后 SQL Server 作业也卡住了

我有一个 SQL Server 代理作业卡在“进行中”。这是一个完整的备份,通常需要 30 分钟,但它需要 7 小时,而且还在增加。我重新启动了代理,然后重新启动了整个操作系统,它仍然显示“进行中”。

有什么办法可以阻止吗?

如果我运行select * from sys.dm_exec_requests,我会得到 2 行处于“正在运行”状态,一个是“SELECT”,另一行是“DBCC TABLE CHECK”。事实上,这项工作的第一步是使用 Ola Hallengren 的脚本运行数据库完整性检查。

版本:

Microsoft SQL Server 2016 (RTM-GDR) (KB4019088) - 13.0.1742.0 (X64)
2017 年 7 月 5 日 23:41:17 版权所有 (c) Windows Server 2016 Datacenter 6.3(内部版本 14393)上的 Microsoft Corporation 标准版(64 位): )(管理程序)

sql-server sql-server-agent sql-server-2016

3
推荐指数
1
解决办法
1555
查看次数

SQL Server 2000 上的警报和通知问题

我正在尝试在 SQL Server 2000 中设置警报和通知,但它们不起作用。我正在测试它们的代理计划作业,我收到一条说明:

注意:无法通过电子邮件通知“[operatorname]”。

然后在当前错误日志中,我看到如下条目:

[264] 在没有建立电子邮件会话时尝试发送电子邮件

xp_sendmail 工作正常,我实际上在这些代理工作中使用它。通知应该告诉我程序已成功完成。我只是要求完成通知才能使其正常工作,然后我会将其更改为失败通知。

任何人都知道为什么会发生这种情况以及如何纠正?我真的很想通知工作。

sql-server sql-server-2000 sql-server-agent

2
推荐指数
1
解决办法
2567
查看次数

能否将 SQL 代理作业通知发送给一个操作员表示成功,而另一位操作员表示失败?

我们要求向某些人发送成功通知,而其他人则收到失败通知。

在此处输入图片说明

但是 UI 似乎只允许 1 个运算符 + 1 个条件的组合。

所以我想知道我们是否可以通过在 MSDB 中事务 sql 来完成?

sql-server-2008-r2 sql-server-2012 sql-server-agent

2
推荐指数
1
解决办法
2683
查看次数

N'[未分类(本地)] 是什么意思?

在这里(和其他地方)的几个问答代码片段中可以看到以下代码,我正在尝试翻译部分N'[Uncategorized (Local)]

    EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', 
       @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
Run Code Online (Sandbox Code Playgroud)

例子

我看过 Microsoft EXECUTE (Transact-SQL)

'姓名'

是有效的用户名或登录名。name 必须是 sysadmin 固定服务器角色的成员,或者分别作为 sys.database_principals 或 sys.server_principals 中的主体存在。name 不能是内置帐户,例如 NT AUTHORITY\LocalService、NT AUTHORITY\NetworkService 或 NT AUTHORITY\LocalSystem。

[N] 'command_string'

是一个常量字符串,其中包含要传递到链接服务器的命令。如果包含 N,则字符串被解释为 nvarchar 数据类型。

我猜N'[Uncategorized (Local)] 部分会获取系统管理员的名称并将其传递给系统管理员以执行作业,但我没有找到一个很好的参考资料来表明所有三个部分是如何协同工作的.

sql-server sql-server-agent

2
推荐指数
1
解决办法
2271
查看次数

用于事务复制的域帐户或 Windows 帐户

所有在线资源都说使用 Windows 帐户作为 Agent 帐户,即 Snapshot、Distributor 和 Log Reader 来设置复制。

请参阅以下链接作为示例:

我的问题是:上面使用域帐户有什么问题,哪个更容易维护和管理?

replication sql-server sql-server-agent transactional-replication

2
推荐指数
1
解决办法
2113
查看次数

在 SQL Server 2016 中安排完整备份、差异备份和事务备份

我研究了使用 SQL Server 代理和维护计划(导致 SQL Server 代理)计划备份。

我首先关心的是,安排备份的最佳方式是什么?

我想要每天完整备份,每小时差异备份和每 15 分钟事务日志备份。

我的第二个担忧是,这是一个好的做法吗?

我在使用 SQL Server 代理时发现了一个问题。我的完整和差异备份被覆盖。我可以覆盖完整备份但不能覆盖差异,因为当我需要恢复它时,我只会有一个差异备份,这不是差异备份的目的。

我怎么能不让它覆盖以前的备份?

最后一个关心和问题是关于实现备份调度的方式。我将使用维护计划,并且可能会安排三个不同的备份。一种是完整的,一种是差异化的,一种是跨国的。

这是用户每天使用的数据库的最佳实践吗?(每天至少 2000 笔交易)

sql-server sql-server-agent sql-server-2016

2
推荐指数
1
解决办法
1345
查看次数

SSIS 执行的 SQL 代理作业失败,并显示“指定了无效的报告选项。仅允许 E、W、I、C、D、P、V 和 N。”

具有 SQL Server Integration Services 包步骤的 SQL 代理作业失败并显示以下消息:

以用户身份执行:DOMAIN\SQLAGENTACCOUNT。适用于 64 位的 Microsoft (R) SQL Server 执行包实用程序版本 13.0.4259.0 版权所有 (C) 2016 Microsoft。版权所有。指定的报告选项无效。仅允许 E、W、I、C、D、P、V 和 N。命令行参数无效。这一步失败了。

sql-server ssis sql-server-agent

2
推荐指数
1
解决办法
4522
查看次数

无法备份到共享文件夹

需要你的帮助。尽管运行 sql 代理服务帐户的域帐户对该共享文件夹具有完全权限,但我的 sql 作业无法备份到共享文件夹。

除此之外,我的 sql 服务帐户使用默认虚拟登录。因此,当我将该帐户更改为我也用于 sql 代理服务帐户的域帐户时,问题就解决了。

为什么我不能使用 sql 代理服务帐户备份到共享文件夹?

在此处输入图片说明

在此处输入图片说明

sql-server backup sql-server-agent jobs

2
推荐指数
1
解决办法
131
查看次数