SQL Server Express
エディションでジョブを作成する方法を教えてください。
3 に答える
SQL Server Expressには SQL Server Agent が含まれていないため、単に SQL Agent ジョブを作成することはできません。
できることは次のとおりです。
バッチ ファイルと SQL スクリプト ファイルを作成し、Windows タスク スケジューラを介して実行することにより、「手動で」ジョブを作成できます。
たとえば、次のように 2 つのファイルを使用してデータベースをバックアップできます。
バックアップ.bat:
sqlcmd -i backup.sql
バックアップ.sql:
backup database TeamCity to disk = 'c:\backups\MyBackup.bak'
両方のファイルを同じフォルダーに入れて、Windows タスク スケジューラを介してバッチ ファイルを実行するだけです。
最初のファイルは、 sqlcmd ユーティリティを呼び出してSQL スクリプト ファイルを渡す単なる Windows バッチ ファイルです。
SQL スクリプト ファイルには T-SQL が含まれています。私の例では、データベースをバックアップするのはたった 1 行ですが、内部に任意の T-SQL を入れることができます。たとえば、UPDATE
代わりにいくつかのクエリを実行できます。
作成するジョブがバックアップ、インデックスのメンテナンス、または整合性チェックのためのものである場合は、Ola Hallengren による優れたMaintenance Solutionを使用することもできます。
これは一連のストアド プロシージャ (および SQL Server の非 Express エディションの SQL エージェント ジョブ) で構成されており、FAQには SQL Server Express でジョブを実行する方法に関するセクションがあります。
SQL Server Express で SQL Server Maintenance Solution を開始するにはどうすればよいですか?
SQL Server Express には SQL Server エージェントがありません。したがって、ストアド プロシージャの実行は、cmd ファイルと Windows スケジュール タスクを使用してスケジュールする必要があります。次の手順を実行します。
SQL Server Express には SQL Server エージェントがありません。したがって、ストアド プロシージャの実行は、cmd ファイルと Windows スケジュール タスクを使用してスケジュールする必要があります。次の手順を実行します。
MaintenanceSolution.sql をダウンロードします。
MaintenanceSolution.sql を実行します。このスクリプトは、必要なストアド プロシージャを作成します。
ストアド プロシージャを実行するための cmd ファイルを作成します。例:
sqlcmd -E -S .\SQLEXPRESS -d master -Q "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = N'C:\Backup', @BackupType = 'FULL'" -b -o C:\Log\DatabaseBackup.txtWindows のスケジュールされたタスクで、cmd ファイルを呼び出すタスクを作成します。
タスクをスケジュールします。
タスクを開始し、正常に完了していることを確認します。
SQL エージェント ジョブを作成する機能は、SQL Server Express Edition では利用できません。別の方法は、Windows タスク スケジューラを使用して SQL スクリプトを実行するバッチ ファイルを実行することです。
これを行うには、最初にsqljob.batという名前のバッチ ファイルを作成します。
sqlcmd -S servername -U username -P password -i <path of sqljob.sql>
servername
、、およびを自分のものusername
に置き換えます。password
path
次に、 sqljob.sqlという名前の SQL スクリプト ファイルを作成します。
USE [databasename]
--T-SQL commands go here
GO
[databasename]
をデータベース名に置き換えます。USE
andは、GO
SQL スクリプトを記述するときに必要です。
sqlcmd
は、SQL スクリプトを実行するためのコマンドライン ユーティリティです。これら 2 つのファイルを作成したら、Windows タスク スケジューラを使用してバッチ ファイルを実行します。
注:この質問については、以前にほぼ同じ回答が投稿されました。しかし、 を使用したログイン情報については明記されていないので、不完全だと感じましたsqlcmd
。
SQL Server Express エディションにはいくつかの制限があります。1 つの理由は、ジョブをスケジュールできる SQL エージェントがないことです。
その機能を提供するサードパーティの拡張機能がいくつかあります。たとえば、以下を確認してください。
- Express Agent for SQL Server Express: Jobs、Jobs、Jobs、および Mail (最新の更新は 2005 年からのもので、現在はメンテナンスされていません)。
- SQL スケジューラ