【SQL】基本的な「お作法」について

<前提>
※データベースの知識なしです。
Databaseに対して「INSERT」と「UPDATE」だけ、
各1回ずつ実行するロボットを作成しています。

<現在のWorkflow>
色々な処理–> [Connect] --> [Execute Query] ※終了

<質問>
UiPathで添付画像のアクティビティを使う際、
「お作法」としてデータベースの切断[Disconnect]が必要なのでしょうか?

uipath_DB

@nk_tecroom
いいえ、切断を終了する必要はありません。
プロセスが実行されたときに切断を使用して、dbへの接続がハンドオフを取得しないようにします

:innocent:

1 Like

コメントありがとうございます!
私の勉強不足で、2行目の理解が追い付きません、、、。

[Disconnect]は不要だと理解しました。

切断せずにDBへの接続を維持する場合。サーバーが並行して処理するゲストの合計は-1になります。
セッションが期限切れにならなくなるまで無駄になります。
DBサーバーハンドルリクエストよりもBOTを多く実行すると、ある時点で、古いリクエストセッションが期限切れになるまでDBに接続できなくなります。
:grinning:

1 Like

こんにちは

DB接続に限らずリソースを使い終わったら開放してあげるのがお作法かと思います。

今回の場合途中の2処理だけのようですので
Connect→ Execute Query → DISCONNECT
で良いのではないかと。

ただし途中で例外が発生した場合も確実にDisconnectを行えるようにTry-CatchのFinally内でDisconnectを行うなどの配慮も必要です。(UiPathのtry-catch-finallyは少々癖があるので場合によってはもう少し工夫が必要な場合があります。)

2 Likes

コメントありがとうございます。
切断するべき、と理解しました。

コメントありがとうございます。

エラー処理についてもアドバイスありがとうございます!
小さな処理ですが、明示的に「切断」しようと思います。
m(_ _)m

1 Like

(余計なことかもしれませんが)
INSERTの後UPDATEで例外が発生したとき、INSERT分が残ってしまっててもいいのかなと思いました。
(再実行はしないのか、再実行すると今度はキー重複でINSERTが例外出すのではないかとか)

添付画像にある Transaction(という一般的に言われている機能)を使用すればこの辺りを制御できるはずなんですが、普通はあるはずの Commit や RollBackが見当たらず、UiPathでどう実装するかわかっていません(苦笑)

4 Likes

こんにちは

マニュアル読む限りこれ(Start Transaction)を使ったほうが細かいことを配慮せずとも実装できそうな感じです。
スコープ処理になっていて、データベースの接続、スコープ内の各Queryの実行、スコープ内で例外発生時はコミットせずに切断、コミットをアクティビティ単位でやるか、最後にやるかの設定、スコープ抜けるときは自動的に切断などなど。

こちらの利用も検討されたほうが良さそうですね。

2 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.