- PR -

SQL文をおく場所は?

1
投稿者投稿内容
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2006-04-30 13:39
一つのテーブルに対するSQL文を一つのプロシージャにまとめておいて、ASP.NETで実行するときに引数にデータベースを渡してそのプロシージャを呼び出すようにしています。
ストアドプロシージャとしてSQLserver2000に置いてそれを呼び出すようにする方法もあると聞きました。そのほうが、何か良いことが出てくるのでしょうか。
データベースとWebサーバは同じマシンにインストールしています。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-30 14:59
引用:

いもさんの書き込み (2006-04-30 13:39) より:

ストアドプロシージャとしてSQLserver2000に置いてそれを呼び出すようにする方法もあると聞きました。そのほうが、何か良いことが出てくるのでしょうか。


保守やパフォーマンスですね。
複雑になってくると、T-SQL で組むべき場面も多々あります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2006-04-30 18:34
じゃんぬねっとさん、ありがとうございます。
一つのプロシージャにまとめて記述したSQL文もSQLserver2000に対して実行しますが、T-SQLとは違ってくるのでしょうか。
プロシージャなので実行時にまとめてコンパイルして実行されずSQL文が一つずつ実行になってしまうのでしょうか。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-04-30 20:12
引用:

一つのプロシージャにまとめて記述したSQL文もSQLserver2000に対して実行しますが、T-SQLとは違ってくるのでしょうか。


http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/books/insidesql1504.mspx
こんなん出ました。

_________________
囚人のジレンマな日々
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-30 20:58
引用:

いもさんの書き込み (2006-04-30 18:34) より:

プロシージャなので実行時にまとめてコンパイルして実行されずSQL文が一つずつ実行になってしまうのでしょうか。


このあたりは ADO.NET と合わせて「Prepare」を調べれば良いかな。
それとも、SQL CLR と勘違いしていらっしゃるのかな? (2000 だからそれはないかw)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2006-04-30 22:25
囚人さん、じゃんぬねっとさん、ありがとうございます。
既にあるプログラムのバージョンアップをしているのですが、ストアドプロシージャを使わず、一つのプロシージャにSQL文をまとめてそれを呼び出す形にしてある理由がどうしても分かりませんでした。
ストアドプロシージャにしてしまうと、何か不都合なことが出てくるのかどうか不安でしたが、メリットのほうが大きいようなので変えてしまおうと思います。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-05-01 12:48
引用:

既にあるプログラムのバージョンアップをしているのですが、ストアドプロシージャを使わず、一つのプロシージャにSQL文をまとめてそれを呼び出す形にしてある理由がどうしても分かりませんでした。


メリットデメリットはそれぞれあるでしょうね。
プログラムの変更というものは避けられませんが、そのとき、プログラムを入れ替えるだけで済むか、ストアドプロシージャも変更するかで負荷が若干変わるでしょう。それを嫌ったのかもしれませんね。
_________________
囚人のジレンマな日々
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2006-05-01 22:37
囚人さん、私はそんなところまで考えが及びませんでした。
アドバイスありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)