tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルexeの連続起動
記事No8774
投稿日: 2009/03/03(Tue) 21:51
投稿者ダメパパ
お世話になります

開発ソース  VS 2005
データベース SQLServer 2005
Windows Server 2003 SP1

上記環境で開発しています。
VB.NET歴は、1年少々です。

今回、A1.exe と B1.exeと云うバッチ処理を行う実行体を作成しました。
A1.exeはSQLServerへADO.com接続
B1.exeはSQLServerへADO.NET接続してます。

A1.exe終了後、B1.exeを起動しようとしています。
A1.exeはバッチ処理が正常に終了します。
A1.exe終了後、A1.exe内からB1.exeを起動するのですが、
B1.exeの処理が出来ません。
B1.exeは単体では正常に処理出来ます。(B1.exeをダブルクリックによる機動)

調べたところ、B1.exeのSQLServer接続が出来ていないようなのですが・・・
何方か、お力をお貸し願えませんでしょうか?
長文すいません。

[ツリー表示へ]
タイトルRe: exeの連続起動
記事No8780
投稿日: 2009/03/04(Wed) 16:12
投稿者オショウ
> A1.exe終了後、B1.exeを起動しようとしています。

  厳密に・・・A1.exeが終了した後にA1.exe中からB1.exeは起動
  できません。

  A1.exeの終了直前に、何らかの機能を使って、B1.exeを起動さ
  せつつ、A1.exeは終了してしまう・・・流れでしょう。

> 調べたところ、B1.exeのSQLServer接続が出来ていないようなのですが・・・
> 何方か、お力をお貸し願えませんでしょうか?
> 長文すいません。

  A1.exe中のB1.exe起動部分で、ちゃんとB1.exeが起動した後に
  A1.exeを終了させるように待ち合わせてみては?

  因みに、
  http://dobon.net/vb/dotnet/process/index.html

  ここが参考になるかと。

以上。

[ツリー表示へ]
タイトルRe^2: exeの連続起動
記事No8783
投稿日: 2009/03/05(Thu) 22:47
投稿者ダメパパ
オショウさん 皆さん
返信が遅れて申し訳ありません。また、ご意見ありがとうございます。

ご提示頂いたところを参照して、修正してみましたが、
エラー内容は変わらず、同じ箇所で止まります。
前回載せらなかったのですが、ソースとエラーコメントです。

ご指摘のとおりA1.exeの最後を

 System.Diagnostics.Process.start("B1.exe")
  me.close()
  eixt sub

とし、B1.exeでは、

  Dim SQLDB As New SqlClient.Sqlconnection("SQL接続文字列")

 SQLDB.OPEN() ← ここで止まる

としています。

以下がエラーの内容です。

 セキュリティポリシーで許可されていない操作をアプリケーションが実行しようとしました。
 必要なアクセス許可をこのアプリケーションに与えるには、システム管理者に連絡するか
 Microsoft .NET Framework 構成ツールを使用して下さい。

 型 'System.Security.Permissions.SecultyPermission,
 mscorlib, Version=2.0.0.0, Culture=neutral, PublicKey Token=b77a5c561934e089'
 のアクセス許可の要求に失敗しました。


コードアクセスセキュリティの問題かと思いもし、
セキュリティ設定も変えた見ましたが、症状は同じままでした。
どうしたものか・・・

[ツリー表示へ]
タイトルRe^3: exeの連続起動
記事No8784
投稿日: 2009/03/06(Fri) 00:24
投稿者オショウ
>  System.Diagnostics.Process.start("B1.exe")
>   me.close()

  これでは、以前と変わりないのでは?
  B1.exeを起動かけて、A1.exeは即終了

>   Dim SQLDB As New SqlClient.Sqlconnection("SQL接続文字列")
>
>  SQLDB.OPEN() ← ここで止まる

  接続文字列には間違いはないのですよね?
  B1.exeを単体で起動したら問題なく動作するとあったので・・・

  通常、ログインに失敗した場合は、アクセス許可の要求の失敗
  と言うエラーにはなりません。

  単体での動作は問題なく、A1.exeから起動するとセキュリティの
  問題?・・・解せませんね〜

  接続文字列は『普通』でしょうか・・・
  サーバー名・ID・パスワードは伏字で構わないので、どんな
  設定なのか、教えて下さい!

以上。

[ツリー表示へ]
タイトルRe^4: exeの連続起動
記事No8786
投稿日: 2009/03/07(Sat) 17:11
投稿者ダメパパ
オショウ さん

返信ありがとうございます

ご質問のあった、接続文字列ですが
自分では、『普通』だと思っていたのですが・・・
一応下記の通りです。

 接続文字列="SERVER=サーバPC名; Integrated Security=False; User ID=SQLUserID; Password=UserPass;"

こんな感じです。
データベース名は、一つのインスタンス内で複数のデータベースに接続するため
特に指定していません。

少し前に、SQLServerに接続できずに同じエラーが出たことがあるのですが
その時は、最終的にユーザIDの間違いだとわかった経緯があります。

[ツリー表示へ]
タイトルRe^5: exeの連続起動
記事No8787
投稿日: 2009/03/07(Sat) 19:20
投稿者オショウ
> データベース名は、一つのインスタンス内で複数のデータベースに接続するため
> 特に指定していません。

  さて何が問題か・・・

  では、a1.exe を起動し、終了するまで待ち、
  b1.exe を起動し、終了まで待つ。と言う『c1.exe』なる
  ものを作ってみたらどうなりますか?

  c1.exe からa1.exe 起動し、a1.exe が完全に終わるのを
  待ってからb1.exeを起動する。

  これで同じであれば、b1.exe が単体で問題が無いと言う
  ことの方が解せません・・・

以上。

[ツリー表示へ]
タイトルRe^6: exeの連続起動
記事No8788
投稿日: 2009/03/07(Sat) 20:58
投稿者ダメパパ
>   c1.exe からa1.exe 起動し、a1.exe が完全に終わるのを
>   待ってからb1.exeを起動する。

オショウ さん
ありがとうございます

なるほど、二つの.exeを管理する親となる.exeを作る事は
考えてもいませんでした。
今は会社にいないので、来週チャレンジしてみます。
結果はなるべく早めにご連絡します。

[ツリー表示へ]
タイトルRe^6: exeの連続起動
記事No8791
投稿日: 2009/03/10(Tue) 01:56
投稿者ダメパパ
オショウ さん
今日は、結果からお伝えします

C1.exeを作成し、A1、B1.exeを起動させた結果ですが ≪ダメ≫でした。
エラー内容としては、
アプリケーション上に下記のコメントがバルーン形式で
出力されました。

 Microsoft.NETセキュリティ警告
   要求元を懸賞および信頼できない場合、個人情報またはパスワードを
   ウィンドウに入力しないで下さい。

根本的な問題で、どこかが間違っているみたいですが・・・
SQLServerへの接続文字列等は間違っていないと思うので、
やはり、コードアクセスセキュリティですかね〜??
.exeを作成したServerPCと起動をかけているServerPCは同一なのですが
以前、書き忘れたのですが、ServerPCは、64Bit版なのですが関係あるのかな〜?

[ツリー表示へ]
タイトルRe^7: exeの連続起動
記事No8792
投稿日: 2009/03/10(Tue) 09:21
投稿者魔界の仮面弁士
>  Microsoft.NETセキュリティ警告
>    要求元を懸賞および信頼できない場合、個人情報またはパスワードを
>    ウィンドウに入力しないで下さい。

# 懸賞(^^;

部分信頼になっているのかな…。
http://www.atmarkit.co.jp/fdotnet/dotnettips/543clickonpartdebug/clickonpartdebug.html

> やはり、コードアクセスセキュリティですかね〜??
ためしに、FullTrust を与えてみたらどうなりますか?

[ツリー表示へ]
タイトルRe^7: exeの連続起動
記事No8793
投稿日: 2009/03/10(Tue) 09:22
投稿者オショウ
> アプリケーション上に下記のコメントがバルーン形式で
> 出力されました。
>
>  Microsoft.NETセキュリティ警告
>    要求元を懸賞および信頼できない場合、個人情報またはパスワードを
>    ウィンドウに入力しないで下さい。
>
> 根本的な問題で、どこかが間違っているみたいですが・・・
> SQLServerへの接続文字列等は間違っていないと思うので、

  SQL Serverへの接続文字列は・・・
  本来、SqlConnectionStringBuilder を使ってやった方がよいと
  思っているので、別段、データベースを固定化するように設定上
  思われますが、SQL文のテーブル名の書き方で、そのサーバー
  上のどのデータベースのどのテーブルにでもアクセスできます。

> やはり、コードアクセスセキュリティですかね〜??

  上記のエラーメッセージは、c1.exeからb1.exe を起動した際に
  表示されたのでしょうか?

  b1.exeが単体起動OKならば、c1.exeから他のプロセスを起動
  する際のセキュリティに関わる設定が引き継がれていない・・・
  のでは?

> .exeを作成したServerPCと起動をかけているServerPCは同一なのですが
> 以前、書き忘れたのですが、ServerPCは、64Bit版なのですが関係あるのかな〜?

  残念ながら64bit版は手元に無いので、確認不能です。

※ a1.exe も、b1.exe も同時起動(手動で)しても問題なく両方
  動作するんですよね?
  a1.exe がDB接続中、b1.exeが接続失敗・・・なんてことには
  ならないですよネ?!

以上。

[ツリー表示へ]
タイトルRe^8: exeの連続起動
記事No8795
投稿日: 2009/03/10(Tue) 22:53
投稿者ダメパパ
オショウ さん 魔界の仮面弁士 さん
ありがとうございます。

仮面弁士さん

誤字への注意ありがとう&すいませんでした。

>> やはり、コードアクセスセキュリティですかね〜??
> ためしに、FullTrust を与えてみたらどうなりますか?

セキュリティを総て「FullTrust」にしてみましたが、結果は変わらず

> セキュリティポリシーで許可されていない操作をアプリケーション〜〜

の警告メッセージが出力されます。


オショウ さん

>   上記のエラーメッセージは、c1.exeからb1.exe を起動した際に
>   表示されたのでしょうか?

C1.exeから A1.exe・B1.exe共に同じエラー?警告?メッセージでした。

>   b1.exeが単体起動OKならば、c1.exeから他のプロセスを起動
>   する際のセキュリティに関わる設定が引き継がれていない・・・
>   のでは?

この辺がそうだと思うのですが…
セキュリティ設定でも解決できないので困ってます。

[ツリー表示へ]
タイトルRe^7: exeの連続起動
記事No8798
投稿日: 2009/03/11(Wed) 01:56
投稿者オショウ
デバッグモードでビルドしたa1.exeやb1.exeを、VisualStudioの統合環境
のデバッグのプロセスのアタッチを使い、本当にどこでエラーしているの
か、その箇所を探して下さい。

c1.exeからa1.exeやb1.exdを起動した際、a1.exeやb1.exeのDBアクセス
直前でMsgBox等で一旦止めて、その際にアタッチしてブレークポイントを
設定するなり、ステップ実行してみて下さい。

それで判明するかも・・・

以上。

[ツリー表示へ]
タイトルRe^8: exeの連続起動
記事No8801
投稿日: 2009/03/11(Wed) 19:11
投稿者ダメパパ
> デバッグモードでビルドしたa1.exeやb1.exeを、VisualStudioの統合環境
> のデバッグのプロセスのアタッチを使い、本当にどこでエラーしているの
> か、その箇所を探して下さい。

>>   Dim SQLDB As New SqlClient.Sqlconnection("SQL接続文字列")
>>
>>  SQLDB.OPEN() ← ここで止まる

ステップ実行すると以前お伝えしたとおり、
上記部分でエラーが発生し、以降の処理を実行しようとしても
実行できず終了してしまいます。

[ツリー表示へ]
タイトルRe^9: exeの連続起動
記事No8802
投稿日: 2009/03/11(Wed) 20:23
投稿者オショウ
> ステップ実行すると以前お伝えしたとおり、
> 上記部分でエラーが発生し、以降の処理を実行しようとしても
> 実行できず終了してしまいます。

  単体では動作して・・・となると、SQL Server側の問題?
  ただ1セッションのみと言うことは考えられない。複数同時
  接続は可能なので、a1.exeが仮に接続をクローズしていない
  状態でもb1.exeは接続が可能なはず・・・

  残念ながら原因がどこにあるか解りません。

  64ビット環境のある方、よろしく!〜

以上。

[ツリー表示へ]