110 likes | 292 Views
プログラムをデータベースに 格納してしまおう. 稲垣 智浩 (CatTail). はじめ に. 弊社は生産管理パッケージを開発/販売してします。 元々はメインフレームやオフコンで開発していたシステムを UNIX → VB4 → VB6 → VB.NET(2005) と移植、およびバージョンアップを繰り返して現在に至ります。 VB6 までは昔ながらの作りのため各処理ごとに EXE ファイルが作成され、それをサーバー上の共有フォルダに格納していました。
E N D
プログラムをデータベースに格納してしまおうプログラムをデータベースに格納してしまおう 稲垣 智浩(CatTail)
はじめに • 弊社は生産管理パッケージを開発/販売してします。 • 元々はメインフレームやオフコンで開発していたシステムをUNIX → VB4 → VB6 → VB.NET(2005)と移植、およびバージョンアップを繰り返して現在に至ります。 • VB6までは昔ながらの作りのため各処理ごとにEXEファイルが作成され、それをサーバー上の共有フォルダに格納していました。 ※共有フォルダに格納する理由として、プログラムの修正が発生した場合、サーバにのみプログラムを入れ替えれば良かったため。
ショートカットの設定 サーバーの共有フォルダにあるメニューのEXEを指定 作業フォルダとしてサーバーの共有フォルダを指定
J-SOX法への対応および対策 • J-SOX法が施行されるに当たり、あるお客様から共有フォルダ上にEXEファイルが格納されているのは内部統制上、都合が悪いとの指摘を受けました。お客様曰く、 (ファイルのアクセス権は設定されていたのですが)エクスプローラでファイル一覧が表示される事自体が問題との事でした。 • こちらからの提案として、共有フォルダを隠し共有(共有名$)としてはどうか、と提案したのですが、エクスプローラのアドレス欄に直接共有名を入力すると一覧表示されてしまうためNGとの回答を受けました • 試行錯誤した結果、SQL ServerにEXEファイルを格納することを思いつきました。
データベースへのプログラム追加方法 • OPENROWSETを使ってINSERT • 例INSERT INTO テーブル名SELECT プログラムID, オプション, コメント, 作成日付, BulkColumnFROM OPENROWSET(BULK ファイル名 , SINGLE_BLOB) AS TBL
デモ • 共有フォルダ上のプログラムを直接実行 • 例外が発生する事を確認。 • データベースに格納されたプログラムを実行 • データベースにプログラムを格納。 • 共有フォルダを削除。 • テストプログラムを実行し、プログラムがクライアントにダウンロードされ、実行される事を確認。
DBにプログラムを格納することのメリット • ファイル感染型のウィルスやワームには感染しない。 • 誤って別フォルダに格納されたプログラムが起動しない。 • データベースをバックアップすることにより、その時点のプログラムもバックアップされる。 • .NETで作成されたプログラムの場合、セキュリティの関係で共有フォルダ上のプログラムを実行すると例外が発生するが、この方式だとクライアントにコピーされるため問題なく実行できる。