1

SQL Server は初めてで、SQL Server ジョブの実行方法を学ぼうとしています。インストールした SQL Server Express インスタンスで msdn からこの簡単な例を実行しました。

USE msdb ;
GO
EXEC dbo.sp_add_job
    @job_name = N'Weekly Backup' ;
GO
EXEC sp_add_jobstep
    @job_name = N'Weekly Backup',
    @step_name = N'Set database to read only',
    @subsystem = N'TSQL',
    @command = N'ALTER DATABASE SALES SET READ_ONLY', 
    @retry_attempts = 5,
    @retry_interval = 5 ;
GO
EXEC dbo.sp_add_schedule
    @schedule_name = N'ROce',
    @freq_type = 1,
    @active_start_time = 212600 ;
USE msdb ;
GO
EXEC sp_attach_schedule
   @job_name = N'Weekly Backup',
   @schedule_name = N'ROce';
GO
EXEC dbo.sp_add_jobserver
    @job_name = N'Weekly Backup';
GO
-- Start the job
USE msdb;
GO
EXEC dbo.sp_start_job N'Weekly Backup';
GO

@active_start_time = 212600 に設定しました。このスクリプトを実行したとき、システム時間は 21 時 23 分でした。したがって、ジョブはそれから 3 分で実行されているはずです。21.30 時間まで待ってから、ジョブの実行履歴を確認しましたが、表示されません。次のスクリプトを使用して、ジョブの実行履歴を確認しました。

SELECT  sj.name, 
sja.run_requested_date, 
CONVERT(VARCHAR(12), sja.stop_execution_date-    sja.start_execution_date, 114) Duration
 FROM   msdb.dbo.sysjobactivity sja
 INNER  JOIN msdb.dbo.sysjobs sj
ON   sja.job_id = sj.job_id
WHERE   sja.run_requested_date IS NOT NULL
ORDER   BY sja.run_requested_date desc

Web から入手した別のスクリプトも試しました。

select 
 j.name as 'JobName',
 msdb.dbo.agent_datetime(run_date, run_time) as 'RunDateTime',
 ((run_duration/10000*3600 + (run_duration/100)%100*60 + run_duration%100 + 31 ) / 60) 
     as 'RunDurationMinutes'
From msdb.dbo.sysjobs j 
INNER JOIN msdb.dbo.sysjobhistory h 
 ON j.job_id = h.job_id 
where j.enabled = 1   --Only Enabled Jobs
--and j.name = 'TestJob' --Uncomment to search for a single job
order by JobName, RunDateTime desc

しかし、リストされているジョブはありません。ジョブが実行されていないということですか?ジョブの名前を変更して再起動しようとしましたが、いいえ...うまくいきません。Express エディションには付属していないため、SQL Server エージェントはありません。助けてください。

4

2 に答える 2

3

@Pondlife と @criticalfix (上記のコメント内) は正しいです。SQL エージェントは、SQL Server のスケジューラです。スケジュールされたジョブは、SQL エージェントなしでは実行されません。

考慮すべき代替案の 1 つは、Windows 用の AT スケジューラを使用することです。これは、バックアップを実行するための優れたコマンド ライン呼び出しについて説明している SO の記事です 。SQL サーバー データベースをバックアップするためのシンプルなコマンド ライン プログラムまたはスクリプトとは

于 2013-05-06T18:39:03.247 に答える
1

「エクスプレス」は無料版です。「ジョブ」は、非無料版を購入すると得られる機能です。

では、あなたが開発者で、仕事をコーディングしたい場合、何ができるでしょうか?

「Developer Edition」は手頃な価格で入手できますが、Developer Edition に DEPLOY することはできません。

ただし、Developer Edition でジョブを作成することはできます。

次に例を示します。

リンク

于 2013-05-06T18:39:59.040 に答える