質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

3971閲覧

SQLServer SMOでのSQL実行時処理件数取得について

izuminao

総合スコア15

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2016/08/17 02:45

###前提・実現したいこと
PowershellにてSQL Serverのメンテナンスを行うスクリプトを作成しております。
その中でデータの削除を行う際、削除された件数を取得したいのですが、実現できません。
どのようにしたら取得可能か教えていただけますでしょうか。

DBへの接続には Microsoft.SqlServer.Management.Smo.Database を使用し
SQL実行には ExecuteNonQuery メソッドを使用しております。
しかし、DatabaseクラスのExecuteNonQuery には戻り値が無いため
SQL実行時に処理された件数がわからず困っております。

環境
Powershell(3.0)
SQLServer2014

###該当のソースコード

Powerhshell

1[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') 2$sqlserver = New-Object Microsoft.SqlServer.Management.SMO.Server('(local)') 3$db = $sqlserver.databases['DB'] 4 5$sql = 'DELETE FROM TBL_A WHERE COL_A = 1' 6 7# SQL(Delete)の実行 8$db.ExecuteNonQuery($sql) # 戻り値が無く、処理件数が不明

###試したこと
ExecuteWithResults メソッドの利用
SQLは実行されデータ削除も行われました。
ただし戻り値のDataSetオブジェクトについて、一通りのプロパティを確認しましたが
処理件数と思われる値は見当たりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
System.Data.Odbc.OdbcCommandクラスを使用すれば実現できるのはわかりますが
処理の中でデータベースサイズのチェックなども行うため
可能であればDatabaseクラスでまとめてしまいたいと考えております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

希望する形ではないと思いますが、DELETEの直後に
select @@rowcount
で取得できるようです。

投稿2016/08/17 05:59

dupont_kedama

総合スコア925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izuminao

2016/08/17 07:19

回答ありがとう御座います。 T-SQLが使用可能だったため、ExecuteWithResultsメソッドに変更し DELETE文の後に「SELECT @@ROWCOUNT」を実行するようにしたところ 処理件数が取得できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問