プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : C# .net)
ACCESSデータファイル接続時のメッセージ
投稿日時: 23/11/26 15:15:06
投稿者: S.Kos

こんにちは、みなさま。
 
ACCESSのデータファイル "DataFile.sccdb" をNASに置いて、C#による「foo.exe」からOLEDB経由で接続しています。
 
接続の度に "プログラム「foo.exe」はネットワークに接続しようとしています" とメッセージされます。
その際ネットワーク情報として "IPアドレス:52.109.52.131" が表示されます。
このメッセージは 「ウイルスセキュリティ ゼロ」による と思われます。
 
同じロジックでEXCEL・VBAから接続すると、なにもメッセージされません。
 
また、この「foo.exe」からODBC経由でSQLSERVERに接続しても、メッセ―ジはありません。
 
なので、これはACCESS側に起因する、と思っていますが・・・、どーなんでしょう?
 
板違いかとも思いますが、なからかのご教示をいただければ幸いです。
 
 

回答
投稿日時: 23/11/27 09:14:12
投稿者: Suzu

S.Kos さんの引用:
なので、これはACCESS側に起因する、と思っていますが・・・、どーなんでしょう?

 
少なくとも、Access のファイル(質問中では 拡張子 sccdb と言っていますが accdb ですよね?)だから
と言うのは無いと思います。
 
 
引用:
このメッセージは 「ウイルスセキュリティ ゼロ」による と思われます。

おっしゃるように、メッセージが「ウイルスセキュリティ ゼロ」なのであれば
そのサービスを一時的に停止すれば、判定できるのではないでしょうか?
 
その上で、そのメッセージを出したくないのであれば
「ウイルスセキュリティ ゼロ」にてその様にする設定があると思われますので
そちらで設定すれば良いと思います。

投稿日時: 23/11/27 09:55:27
投稿者: S.Kos

Suzuさん、ご教示のほど、感謝です。
 
>拡張子 sccdb と言っていますが accdb です・・
>
お恥ずかしい限り、全くその通りです。
 
>そのメッセージを出したくないのであれば・・
>
ご指摘のように、これを抑制するスイッチも表示されています。
 
知りたいのは、なぜ?、なのです。
これまで、外に置いた様々なDBに、様々な経路で接続しています。
 
このメッセージは初めての試み「Access・C#・OLEDB」で生じました。
 
"IPアドレス:52.109.52.131"をググると、どーやらMS(東京)・・・
なので、Access起因か?、と思ったしだいです。
 

回答
投稿日時: 23/11/27 10:50:46
投稿者: Suzu

S.Kos さんの引用:
知りたいのは、なぜ?、なのです。
これまで、外に置いた様々なDBに、様々な経路で接続しています。
 
このメッセージは初めての試み「Access・C#・OLEDB」で生じました。
 
"IPアドレス:52.109.52.131"をググると、どーやらMS(東京)・・・
なので、Access起因か?、と思ったしだいです。

 
 
foo.exe は 使ったこともありませんので
確証はありませんが、Access 自体が悪いのではなく、
 
・foo.exe
・接続ドライバ
・接続設定
 
のどれかと思います。
 
接続先が、Access であり、
それの 接続ドライバが MSから発行されており
そのドライバ内で、MSへ繋ぐ、または、接続文字列 で MSへ繋ぐ 辺りが 濃厚 と思います。
 
 
引用:
同じロジックでEXCEL・VBAから接続すると、なにもメッセージされません。

同じロジックと言うのは、同じ経路と言う意味だとしても
使用する OLEDBドライバは、別の物になっていませんか?
 
試すにしても別のODBCドライバ、OLEDBプロバイダ、接続文字列を使えば出ない 何て事がありませんか?

回答
投稿日時: 23/11/28 09:31:20
投稿者: MMYS

コーディング視点ではなく、内部実装を思考すれば、当然の動作と思いますが。
OLEDB内部動作をブラックボックスと考えず、内部動作まで考えましょう。
 
 
まず、ウイルスとは、なんでしょう。被害の一つに、ファイルの改ざん。たとえば、NAS上にあるファイルを書き換えてファイル改ざんなど。ウイルスは、Microsoftでは悪意のあるプログラムと称してるとおり、作成者が悪意を持って作成したプログラムです。
そして、ウイルスの形態で一番強力で一番多いのが「exeファイル」。実行プログラムです。なんせプログラムですから、コンピューターに危害を加えるつもりなら、なんでも出来る。もちろんC#で悪意のあるプログラムを作成可能ですよね。
たとえば、C#でネットワーク上のファイル改ざんとか作成可能ですよね。
 
 
SQL-SERVERは、データベース・サーバ。つまり、専用のコンピューターを用意して、その用意したコンピューターに管理プログラムをインストール。この管理プログラムのひとつがSQL-SERVERです。
Accsessのaccdb・mdbファイルの相当するデータファイルはサーバの中にありますが、このデータファイル(データベース)に直接アクセスできるのは管理プログラム(SQL-SERVER)のみでクライアントから、このデータファイルを直接操作できません。
 
つまり、クライアントからデータベースへアクセスは
・〇〇のデータをください
・〇〇のデータを更新して
とSQL-SERVERに命令を送るだけ。
 
そしてSQL-SERVERがその内容をサーバ内部で処理して、結果だけを呼び出し元に返します。実際のデータベース処理はサーバ内部のSQL-SERVERプログラムが行っています。
 
つまりネットワーク上はSQL-SERVERに、SQL文字列を送っているだけ。そして結果を受け取るだけです。
ネットワークに流れるのはSQL文字列です。
 
 
一方、NAS上の"DataFile.sccdb"の場合、専用コンピューターなどありません。では、実際に"DataFile.accdb"への内部処理は、どのコンピューターが行うか考えてみてください。データを実際に処理するのは、自身のコンピューター。クライアント側です。
つまりNAS側は、単にファイルがあるだけ。プログラムからOLEDB経由で操作した時、ローカルのOLEDBドライバーが"DataFile.ccdbを直接処理します。OLEDBドライバーがファイルを開き、ファイルを更新する。つまり書き換える。
 
つまり、ネットワーク上は単なるファイル共有。
 
 
さて、「foo.exe」からOLEDB経由でNAS上の "DataFile.accdb" にアクセスした場合を考えてみます。更新処理はOLEDBドライバが行いますが、OLEDBは「foo.exe」の内部から呼び出しています。そして、"DataFile.accdb"の更新。つまり、書き換えを行いますよね。これは外部から見た場合、「foo.exe」がネットワーク上のファイル更新していることになります。
 
セキュリティ観点で見ると、見知らぬ実行ファイルが、ネットワーク上のファイルを改ざん。と見えませんか。
 
 

S.Kos さんの引用:

同じロジックでEXCEL・VBAから接続すると、なにもメッセージされません。

EXCEL上には、一般機能に外部データ取り込み機能があります。もちろんAccsessデータベースも取り込み可能。そしてExcel-VBAからもOLEDB経由で可能なのはご存じの通り。
Excel-VBAですが、これはExcelの中で動作します。逆にExcelが無ければ動作しません。ところでExcel上で動作ですが、正しくは『EXCEL.EXE』の中で動作です。
 
これ、EXCELの外部データ取り込み機能も、ユーザ作成のExcel-VBA上のも、ネットワーク上ではどちらも『EXCEL.EXE』からのアクセスとなりますよね。「EXCEL.EXE」がAccsessデータベースに接続したとき、これが一般機能なのかExcel-VBAからのアクセスかは外部ソフトは知りえないし関係ありません。
 
つまり、セキュリティ観点では、『EXCEL.EXE』がAccsessデータベースに接続がとなります。
 
質問、『EXCEL.EXE』はウイルスですか。
 
 
S.Kos さんの引用:
また、この「foo.exe」からOLEDB経由でSQLSERVERに接続しても、メッセ―ジはありません。

SQL-SERVERに、SQL文字列を送っていることは説明済みです。SQLは単なる文字列。ネットワーク上では、文字列・数値をやりでです。SQLでは少なくともクライアント環境に害を与えることは出来ないでしょう。
 
 
以上のことを「ウイルスセキュリティ ゼロ」視点で見ると、「exeファイル」は実行ファイルである。そして未知の「foo.exe」がネットワーク上のファイルを更新。これはウイルスの可能性が高いと判断。
「EXCEL.EXE」は、Microsoft製のプログラム。安全。「EXCEL.EXE」からネットワークアクセスは問題ない。警告不要
SQL-SERVERへの接続は文字列や結果のやり取りで、ローカルのセキュリティリスクは低い。
 
 
 
※NAS上でAccsessファイルは、単なるファイル共有です。複数台から同時に更新作業に入ったら、整合性が取れず、ファイル破損の可能性があります。Accsessファイルの排他制御は仕組み上オマケみたいなもの。
※サーバーなら、複数台から同時更新も問題ありません。専用マシンで更新ですから排他制御も可能。同時アクセスも問題ありません。
 
 

投稿日時: 23/11/29 14:00:38
投稿者: S.Kos

MMYSさん、ご教示のほど、ありがとうございました。
 
丁寧な解説、首肯できました。
 
ACCESSへの冷めた(一歩引いた)視座からの様々、激しく(笑)同意します。
 
SQL-Serverによる巨大なシステムの、ほんの触りをACCESSでデモンストレーションしよう・・
取り掛かかった直後から、なんじゃこりゃあぁぁぁ?、の連続でした。
 
スクリプトの「--」が通らない、、、三つ以上のテーブルのJOINは、、、
 
スクリプの中で「ビット演算ができない」と判り、途方にくれました。
 
やれやれなオシゴトですが、もう少し続けなくてはなりません。
これが終わったら、、、以後、ACCESSには触りません!
 
ありがとうございました、ここで閉じます。