0

クライアントテーブルから履歴テーブルにデータをコピーする手順があります。

ユーザーが毎月特定の日にボタンを押すことなく、自動的にそれを行うにはどうすればよいですか?

SQL Server 2008 Express Editionを使用しているため、SQLServerエージェントを使用してジョブをスケジュールできません。

4

2 に答える 2

1

SQL Expressでは、これは不可能です。これを実行するプログラムを作成する必要があります。その後、Windowsタスクスケジューラを使用してプログラムを実行できます。SQL Serverの上位バージョンには、SQL ServerAgentが含まれています。SQLServerAgentを使用すると、さまざまな処理を実行できます。

于 2013-03-12T20:36:06.607 に答える
1

SQL Expressを使用しているため、SQLServerエージェントを使用することはできません。ただし、多くの選択肢があり、オペレーティングシステムに応じて、schtasksまたはWindowsタスクスケジューラを使用してすべてをスケジュールできます。

これらすべての言語/ツール(および他の多くの言語)には、SQL Serverに接続し、ストアドプロシージャを実行する機能があります。次のエージェントの置き換えを試すこともできます。

VBScriptを使用した例を次に示します。

  1. メモ帳を開きます。次のコードを入力し、$tokens$を実際の値に置き換えます。

    s = "$your server/instance name$"
    db = "$your database name$"
    u = "$your SQL auth user ID$"
    p = "$your SQL auth password$"
    constr = "provider=SQLOLEDB;Data Source=" & s & ";Initial Catalog=" & s & _
             ";User ID=" & u & ";Password=" & p & ";Network=DBMSSOCN;"
    Set conn = CreateObject("ADODB.Connection")
    conn.Open constr
    conn.Execute "EXEC dbo.$your procedure name$;"
    conn.close: set conn = nothing
    
  2. このファイルを名前を付けて保存c:\somewhere\ScheduledProcedure.vbs

  3. コマンドプロンプトを開き、次のように入力します(これにより、このスクリプトは毎月15日の深夜に実行されるようにスケジュールされます)。すべて1行で実行します。

    schtasks /create /tn "some name" 
      /tr "wscript ""c:\somewhere\ScheduledProcedure.vbs""" 
      /sc monthly /d 15 /st 00:00
    

スケジュールされたタスクのリストにこのタスクを表示するには(たくさんありますが、最初のグループに含める必要があります):

schtasks /query

後で削除する場合:

schtasks /delete /tn "some name" /F
于 2013-03-12T20:37:23.573 に答える