1時間ごとにMS SQL Studioでクエリを自動的に実行する


13

私は大企業のアプリケーションをサポートしています。私の役割の1つはデータのクリーンアップです。1時間ごとに実行する必要があるクエリがあり、それを自動化する必要があります。組織ポリシーのため、SQL Serverエージェントジョブを作成したり、スキーマを変更したりすることはできません。データを操作することしかできません。

終わりのない

WHILE(1=1)
BEGIN 
WAITFOR DELAY '01:00';
--do work
END

私のために仕事をしますが、私はパーマオープン接続の考えで肩をすくめます。

理想的には、MS SS自体のスクリプトを作成して1時間ごとに特定のコードを実行しますが、それが可能かどうかはわかりません。

この問題の解決策はありますか?


1
PCでWindowsスケジューラを使用できますか?
17

12
あなたのためにそれをスケジュールする許可を持っている誰かに尋ねてください。
ミスターマグー

@sepupic MS SSで何も助けてくれないなら、それが私の次の研究の地です。
イヴァンコシェレフ

同意する。クライアントコンピューターでループコードを実行すると、非常に不快に感じるでしょう。あなたのPCがクラッシュした場合、誰かがそれを抜いたとしたらどうでしょう。SQLチームがアプリチームに利用できない同様の環境で働いていました。他のスケジュールされたタスクがどのように管理されているか試してみてください。別の回避策は、SQL Server Reporting Servicesを使用することです。理想的ではない、私の知っている...
テリーC

9
正しい解決策は、DBAにアクセスし、SQL Serverエージェントジョブを作成して、このクリーンアップを1時間ごとに実行することです。次に、「クリーンアップ」が頻繁に必要なデータベースのデータを取得している理由を見つけて修正します。
-alroc

回答:


22

あなたの友人はsqlcmd(Microsoft Technet)です

  1. クリーンアップジョブの実行に必要なスクリプトを使用してSQLファイルを作成します
  2. sqlcmd.exeおよび必要なパラメーターを使用してスクリプトを実行します
  3. Windowsスケジュールタスクを作成し、必要なすべてのパラメーターを使用してコマンドを追加します

例えば

sqlcmd -d YOUR_DB -E -i YOUR_SCRIPT.SQL -o OUTPUTFILE.TXT 

幸運を。


4
これらのスクリプトが、開発用コンピューターではなく、スケジュールされたタスクと共に適切なアプリ/ツールサーバーに配置されていることを確認してください。
GER

7

クエリを実行するためにManagement Studioは必要ありません。

誰かにジョブをスケジュールしてもらうオプションが本当にない場合は、hot2useの答えにあるようにsqlcmd 調べる必要があります。

サポートされていないバージョンを使用している場合(バージョンを指定しなかったため)、コマンドラインクライアントであるosqlもありますが、このツールは廃止されています。

次に、必要なスケジューラ(Windowsタスクスケジューラなど)を使用してコマンドをスケジュールし、次のようなものを実行できます。

OSQL -E -i c:\temp\dowork.sql

ドキュメントを見て、サーバーの選択と認証のオプションを確認してください。


-1

MS SQLスタジオ内(オブジェクトエクスプローラーでサーバーを展開し、通常はリストの一番下にあるはずです)にある「SQL Serverエージェント」を使用するのが最善の策です。

これにより、定義された間隔で実行するように設定できるジョブが作成されます。ジョブは、クライアントではなくサーバー上でサービスとして実行されます。これは、クライアントが切断した場合でも実行され、サーバーが再起動された場合(理由は不明)、再度初期化する必要なくジョブが実行され続けることを意味します。

欠点は、これを行うにはアクセス権の昇格が必要になる可能性が高いことです。


3
質問でおそらくこの点を見落としているでしょう:組織ポリシーのため、SQL Serverエージェントジョブを作成できません[...]
Andriy M

@Andriy:まだ正しい答えです。私たちは人々が組織の欲求に反してITをシャドウするのを支援すべきではありません。
ディランノール

1
@DylanKnoll:ええと、回答者がOPがポリシーに言及していることを認め、その愚かさ(たとえば、コメントの行に沿ったもの)に対する議論を含めることは完全に理にかなっていると思いますが、「助けてはいけません」?提案され、受け入れられているオプションはあまりにもひどく見えないので、この場合、原則に固執することは少し厳しいように思われます。
アンドリーM

私もあなたの意見を聞きますが、DBAの観点についてはどうですか?誰かがDB設計の間違いを隠そうとしているように聞こえます。
ディランノール

1
「SQL Serverエージェントジョブ」に変更される前に、「SQLサーバージョブ」を読み取りました。前者には後者よりも別の意味があるとは思わない。(ちなみにそれを編集したのはOPではありませんでした;私がそうするようにわずかに誤った用語を正確に理解し、修正した人でした。)しかし、元の言葉遣いは見落としやすいですいずれにせよ、私はまだあなたの側の見落としだったと主張します:)
アンドリーM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.