我想定期调用存储过程。在 Oracle 上,我会为此创建一个工作。我发现 Postgresql 可以通过使用外部工具(cron 等)和 PgAgent 很好地模拟这一点。
您是否知道不涉及外部工具的“内部”替代方案?
~/.pgpass
) 的额外系统配置。Postgresql 8.3
Linux RedHat 64 位
由于我是一名 DBA(并且在许多情况下,事实上的系统管理员),SQL Server 安装在我必须定期使用的几乎每台服务器上。我最近意识到我在几乎所有情况下都使用 SQL 代理作为作业调度程序,而不是本机 Windows 任务调度程序。
从我的角度来看,SQL Agent 比原生的 Windows 任务计划程序有很多优势:
但是,我无法逃避这是一种不好的做法 - SQL 代理应该只保留用于与数据库相关的任务,并且我应该让操作系统级别的任务在 Windows 任务计划程序中运行,尽管我不喜欢它的可用性。
这样依赖SQL Agent可以吗?如果没有,我是否应该考虑使用第三方 Windows 任务调度程序来获得我正在寻找的某些功能?
我在一家大企业中支持一个应用程序,我的职责之一是清理数据。我需要每小时执行一个查询,我想自动化它。由于组织政策,我无法创建 SQL Server 代理作业或修改架构,我只能操作数据。
无尽的
WHILE(1=1)
BEGIN
WAITFOR DELAY '01:00';
--do work
END
Run Code Online (Sandbox Code Playgroud)
为我完成这项工作,但我对永久开放连接的想法不屑一顾。
理想情况下,我会编写 MS SS 本身的脚本以每小时执行一段给定的代码,但我不确定这是否可行。
这个问题有什么解决办法吗?
我正在开发一个 SQL Server 数据库,其中包含订单和执行这些订单的机器。一台机器不能同时分配多个有效订单。换句话说:这个 SQL 请求永远不会产生结果:
SELECT MachineId
FROM Orders
WHERE (Orders.Status=1)
GROUP BY MachineId
HAVING COUNT(Id)>1
Run Code Online (Sandbox Code Playgroud)
我在 Microsoft SQL Server Management Studio 环境中打开此 SQL 请求,每次按 时F5,我确实看不到任何结果。
但是,我确信 SQL 查询有时确实会产生结果,并且我对那些时间以及当时查询的结果很感兴趣。
有人知道我如何找到这个吗?(“archive-log”标签只是一个想法)
提前致谢
我正在阅读 postgresql 复制解决方案,但是,即使我刚刚开始了解它是如何工作的,另一个疑问也出现了。我将使用 postgres 内部复制解决方案,但据我所知,每个事件都将在实现时复制;例如,如果我将一些数据插入主站,它会自动复制到从站......我对吗?
嗯,是这样吗,我正在寻找将此复制安排为被动备份的方法,但问题是,例如,我需要在每个星期一晚上将数据库与当天插入的所有数据一起复制到Amazon EC2 虚拟服务器中的从数据库。我正在考虑使用 cron 作为第一种方法,但阅读 postgres 文档我意识到实际上只配置必要的文件,postgres 为你做...
那么,我怎样才能在需要的时刻安排复制呢?
PD.-时间表可能会有所不同,因此它需要完全通用,而且...我正在使用 Ubuntu 12.04 和 PostgreSQL 9.1,就像在主从中一样。谢谢
你能帮我如何在 SQL 数据库中自动执行存储过程而不在 SQL 中进行任何事务吗?我想在特定的修复时间执行。
sql-server sql-server-2008-r2 sql-server-express scheduled-tasks
我们正在尝试在 PostgreSQL 中配置定期作业。为此,我们在运行 Postgres 9.6 的 Linux 机器上安装了citusdata pg_cron项目。
系统信息:
按照pg_cron存储库中的说明,我们在postgresql.conf
以下配置中进行设置:
shared_preload_libraries = 'pg_cron'
cron.database_name = 'our db_name'
Run Code Online (Sandbox Code Playgroud)
然后,db_name
我们创建了 EXTENSION pg_cron
CREATE EXTENSION pg_cron;
Run Code Online (Sandbox Code Playgroud)
我们安排了我们的第一个 Postgres 工作:
SELECT cron.schedule('45 12 * * *', $$CREATE TABLE testCron AS Select 'Test Cron' as Cron$$);
Run Code Online (Sandbox Code Playgroud)
因此,jobid 1 被创建并列在表中cron.job
。
我们预计在 12:45 将启动计划作业的命令。但什么也没有发生。
该testCron
表未创建,我们在任何日志中都没有踪迹。
我们还定义了 LOG_FILE/usr/src/pg_cron/include/pathnames.h …
我的一项工作失败了,它显示以下消息。
Error:
Could not allocate a new page for database 'Reporting' because
of insufficient disk space in Filegroup ‘PRIMARY’.
Create the necessary space by dropping objects in the filegroup,
or setting autogrowth on for existing files in the filegroup.
[SQLSTATE 42000] (Error 1101) The step failed.
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题。
谢谢,阿
我有一个关于工作统计的问题。因此,我有一份具有以下时间表的工作:每天在上午 12:00:00 到晚上 11:59:59 之间每 5 分钟发生一次。时间表将于 2017 年 12 月 13 日开始使用。
在 2019-10-20 上午 11:27 我运行了两个脚本来获取 last_run_time 和 next_run_time,下面是脚本及其对应的结果:
USE msdb
GO
SELECT J.Name AS 'Job Name'
,'Job Enabled' =
CASE J.Enabled
WHEN 1 THEN 'Yes'
WHEN 0 THEN 'No'
END
,STUFF(
STUFF(CAST([active_start_date] AS VARCHAR(8)), 5, 0, '-')
, 8, 0, '-') AS 'Job Schedule Start Date'
,STUFF(
STUFF(CAST([active_end_date] AS VARCHAR(8)), 5, 0, '-')
, 8, 0, '-') AS 'Job Schedule End Date'
,'Job Frequency' =
CASE …
Run Code Online (Sandbox Code Playgroud) sql-server sql-server-agent jobs scheduled-tasks sql-server-2014
sql-server ×5
jobs ×3
postgresql ×3
amazon-rds ×1
archive-log ×1
cron ×1
errors ×1
replication ×1
scripting ×1