- PR -

VB.NETのマシンと別のマシンにORACLEのDBサーバーが存在する時の設定について。

投稿者投稿内容
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-04-13 14:52
 こんにちは。

 そもそもDBサーバーからファイルの実体を取りにくるのでなく、Aサーバーからファイルの内容(バイナリデータ)をBLOBにぶちこめばいいだけではないでしょうか?
KC@JoJo
会議室デビュー日: 2004/04/12
投稿数: 7
投稿日時: 2004-04-13 15:52
Jitta様、きくちゃん様、ラフィン様 書き込みありがとうございます。

----Jitta様引用---------------------------------------------------------------
特定のマシンのローカルユーザに対して権限を設定することは出来ないので、たとえばASPNETユーザをドメインに設定したユーザグループに所属させ、ドメインのグループに権限を与えます。それはわかりますか?
------------------------------------------------------------------------------
それは、やったことがないのでためしてみます!!

---ラフィン様引用--------------------------------------------------------------
 そもそもDBサーバーからファイルの実体を取りにくるのでなく、Aサーバーからファイルの内容(バイナリデータ)をBLOBにぶちこめばいいだけではないでしょうか?
------------------------------------------------------------------------------
PL/SQLを使わなくてはいけない理由ですが、
BLOB型は、PL/SQLからでないとダメだという話をきいたので、AサーバーからAサーバー内のフォルダにある画像データを直接oracleのテーブルに登録できないと思っていました。
それは、4Gと大きいためと聞きました。
ということは、普通にinsert文で登録できるのでしょうか?
 
 画像データの登録もあるのですが、画像データの登録とは別にこのシステムでPL/SQLのバッチも走らせています。夜間バッチならいいのですが、VB.NETの画面から起動させるものもあり、そこでも同じように悩んでいます。

 すいませんが、よろしくご教授ください。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-04-13 16:13
引用:

ということは、普通にinsert文で登録できるのでしょうか?



 うる覚えモードです。

 普通..ではないです。BLOB列はnullにして一旦Insert。その後LOBの関数を使ってBLOB列にバイナリデータを流し込む。という2ステップです。ただし勝手にODP.Netでの話で書いています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-13 16:37
引用:

ラフィンさんの書き込み (2004-04-13 16:13) より:

 普通..ではないです。BLOB列はnullにして一旦Insert。その後LOBの関数を使ってBLOB列にバイナリデータを流し込む。という2ステップです。


 J04157-01『アプリケーション開発者ガイド - ラージ・オブジェクト』にあります。これ、OracleのCDにあるマニュアルでは「オンライン」になっていて、リンクをクリックすると404エラーになります。それで、ここからダウンロードしました。ダウンロードには登録が必要です。
 これの13章が、「OraOLEDBを使用したLOBの操作」となっていまして、ADOでは(注意)専用のメソッドが用意されています。残念ながらADO.NETにはありません。で、PADROCKさんが間違って参照を張っているMSのこちらの技術情報に、SQL Serverですが、ADO.NETでの方法があります。
 また、J07306-01『Oracle Data Provider for .NET 開発者ガイド』の3−25ページからが「LOBサポート」となっています。3−27ページに、
引用:

Oracle LOB 列に格納できるデータは最大4GB ですので注意してください。LOB データが
DataSet 内にフェッチされると、DataSet がLOB 列に保持できるLOB データの実際の量
は、.NET の文字列型の最大サイズ(2GB)に制限されます。したがって、2GB を超える
LOB データをフェッチする場合は、データの損失を回避するためにODP.NET LOB オブ
ジェクトを使用する必要があります。


とあります。


 ラフィンさんのおっしゃる、いったんnullについては、カスタムオブジェクト型のデータを格納するとき、だったと読んだような気がするのですが、それを探していて見つからず、上記の様な結果となりました。
naruto
会議室デビュー日: 2004/04/14
投稿数: 1
投稿日時: 2004-04-14 09:51
引用:
VB.NETがネットワークパスを認識してくれないらしくAサーバーからPL/SQLを実行したり、DBサーバーにあるフォルダを参照したりすることができません。



見当違いかもしれませんが、解決していないようですので・・・
AサーバからPL/SQLの実行ができないとありますが、データベース内に
PL/SQL文をパッケージもしくはストアドとして配置しておけば
いいのでは?insertなどがAサーバから実行できるならそれで問題ないかと・・・

あと、DBサーバのフォルダをAサーバから参照したい理由は
DBからAサーバのフォルダが参照できない為ですよね?
ならば参照したいフォルダを共有化し、UTL_FILEオプションに\\から記述、
あと、DBサーバ上のサービス(データベース)のログインユーザーを
ローカルからフォルダ参照可能なユーザ(Administratorなど)に変更
すれば参照できます。ネットワークフォルダの参照方法は
オラクルのマニュアルやオラクル社の掲示板にも詳しくのってると思うので
見たらいいのではないでしょうか?

見当違いならすいませんm(__)m
KC@JoJo
会議室デビュー日: 2004/04/12
投稿数: 7
投稿日時: 2004-04-14 10:38
naruto様、書き込みありがとうございます。
まったく見当違いなことはありません。むしろ当たってます。
 narutoさんの方法で試したり、オラクルの方でも当たってみます。
 ありがとうございました。m(__)m

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