SQL ServerExpressエディションでジョブを作成する方法


82

SQL Server Expressエディションでジョブを作成する方法を誰かに説明してもらえますか?


6
SQLエージェントジョブを参照している場合、その機能はExpressエディションでは使用できません。:他の可能性のため、この質問への回答を参照してくださいstackoverflow.com/questions/3788583/...
8キロバイト

Expressエディションは、SQL Serverのブローカーをサポートし、あなたは次のように独自のメカニズムを作成することができ、ここで
ルカシュSzozda

回答:


123

SQL ServerExpressにはSQLServerエージェントが含まれていないため、SQLエージェントジョブを作成することはできません。

実行できることは次のとおり
です。バッチファイルとSQLスクリプトファイルを作成し、Windowsタスクスケジューラを介してそれらを実行することにより、「手動で」ジョブを作成できます。
たとえば、次のような2つのファイルを使用してデータベースをバックアップできます。

backup.bat:

sqlcmd -i backup.sql

backup.sql:

backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

両方のファイルを同じフォルダーに入れ、Windowsタスクスケジューラを介してバッチファイルを実行するだけです。

最初のファイルは、sqlcmdユーティリティを呼び出してSQLスクリプトファイルを渡すWindowsバッチファイルです。
SQLスクリプトファイルにはT-SQLが含まれています。私の例では、データベースをバックアップするのは1行だけですが、任意のT-SQLを内部に配置できます。たとえば、UPDATE代わりにいくつかのクエリを実行できます。


作成するジョブがバックアップ、インデックスメンテナンス、または整合性チェック用である場合は、OlaHallengrenによる優れたメンテナンスソリューションを使用することもできます。

これは、一連のストアドプロシージャ(およびSQLServerの非ExpressエディションのSQLAgentジョブ)で構成されており、FAQには、SQL ServerExpressでジョブを実行する方法に関するセクションがあります。

SQL ServerExpressでSQLServerメンテナンスソリューションを開始するにはどうすればよいですか?

SQL ServerExpressにはSQLServerエージェントがありません。したがって、ストアドプロシージャの実行は、cmdファイルとWindowsのスケジュールされたタスクを使用してスケジュールする必要があります。次の手順を実行します。

SQL ServerExpressにはSQLServerエージェントがありません。したがって、ストアドプロシージャの実行は、cmdファイルとWindowsのスケジュールされたタスクを使用してスケジュールする必要があります。次の手順を実行します。

  1. MaintenanceSolution.sqlをダウンロードします。

  2. MaintenanceSolution.sqlを実行します。このスクリプトは、必要なストアドプロシージャを作成します。

  3. ストアドプロシージャを実行するための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.txt

  4. Windowsのスケジュールされたタスクで、cmdファイルを呼び出すタスクを作成します。

  5. タスクをスケジュールします。

  6. タスクを開始し、タスクが正常に完了していることを確認します。


1
ログイン情報はどこに指定すればよいですか?
hasanG 2015年

1
@HasanGürsoy(BATファイルの有無にかかわらず)SQLCMDを実行するスケジュールされたタスクを作成する場合は、Windows認証にSQLCMDの「-E」パラメーターを使用することをお勧めします。これを機能させるには、Windowsのスケジュールされたタスクの所有者であるWindowsユーザーに対してSQLServerログインを定義します。タスクが実行されているウィンドウログインが不明な場合は、BATファイルに「WHOAMI」(DOSコマンド)を入力し、BATファイルの出力をキャプチャして、誰が実行しているかを確認します。
Doug_Ivison 2015年

@HasanGürsoyまたは、SQL Server認証の場合、パスワードをファイルのどこにでも置くのではなく、Windowsのスケジュールされたタスク(アクセス許可によって誰が読み取ることができるかを管理する)にパスワードを置きます。BATファイルのコマンドラインに表示されます。これがBATファイルに渡される最初のパラメーターである場合、BATファイル内で、たとえばSQLCMD行で%1として参照できます。
Doug_Ivison 2015年

41

SQLエージェントジョブを作成する機能は、SQL Server ExpressEditionでは使用できません。別の方法は、Windowsタスクスケジューラを使用してSQLスクリプトを実行するバッチファイルを実行することです。

これを行うには、最初にsqljob.batという名前のバッチファイルを作成します

sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

置き換えservernameusernamepasswordそしてpathあなたに。

次に、sqljob.sqlという名前のSQLスクリプトファイルを作成します

USE [databasename]
--T-SQL commands go here
GO

[databasename]データベース名に置き換えます。USEそしてGOあなたはSQLスクリプトを記述する際に必要です。

sqlcmdSQLスクリプトを実行するためのコマンドラインユーティリティです。これら2つのファイルを作成した後、Windowsタスクスケジューラを使用してバッチファイルを実行します。

注意:以前、この質問に対してほぼ同じ回答が投稿されました。しかし、を使用してログイン情報を指定していなかったため、不完全だと感じましたsqlcmd


そのsqljob.sqlをどこに保存しますか?いつ実行するのですか?
WTFZane 2017年

1
@WTFZane、バッチファイルを実行している人から場所が利用できる限り、問題ではありません。(上記のスクリプトでは、path of sqljob.sql使用する場所に置き換えてください)。*.sqlここでのファイルは単なるテキストファイルにすぎないことを忘れないでください。
アベル

16

SQL Server Expressのエディションには、いくつかの制限があります。1つの方法は、ジョブをスケジュールできるSQLエージェントがないことです。

その機能を提供するサードパーティの拡張機能がいくつかあります。例を確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.