• 締切済み

IISから起動したEXEがSqlServerに接続できない

環境 DB Windows2000Server + SqlServer2000 WEB Windows2000Server + IIS5.1? WEBサーバーに存在する、VB6SP5で作成したSAMPLE.EXEを単体で実行すると 問題なくDBに接続できますが、IISでactiveX.Dllからshell関数で呼出した 同じSAMPLE.EXEからは、DBに接続するときに以下の様なエラーが表示されます。 ※タスクマネージャーで確認すると、SAMPLE.EXEは正常に起動しています。 Err.Number = -2147467259 Err.Description = [DBNMPNTW]ConnectionOpen (CreateFile()). SAMPLE.EXEでは以下のように、DBに接続を試みています。 strConn = "Provider=MSDataShape.1;Persist Security Info=False;Connect Timeout=15;" _ & "Data Source=192.***.***.***;" _ & "User ID=sa;" _ & "Password=;" _ & "Initial Catalog=DB_NAME;" _ & "Data Provider=SQLOLEDB.1" Set objConn = New ADODB.Connection objConn.ConnectionString = strConn objConn.Open エラーからすると、名前付きパイプの問題でもあるようですが EXEをDOS窓またはエクスプローラー上から実行すると問題ないので、 実行ユーザーの権限の問題でしょうか? activeX.DllからはDBに接続できます。 どうしてでしょうか。 宜しくお願い致します。

  • ST202
  • お礼率55% (11/20)

みんなの回答

回答No.2

接続時にネットワークライブラリの指定が無いので名前付きパイプでの接続になっていますね。 IIS+ASPから呼び出したActiveX DLL内でshell関数で実行したプロセスの実行ユーザーはIISの匿名ユーザー?あるいは何かのシステムアカウント?になっているのだと思いますが、SQL-Serverがそのユーザーでの接続を許していないので接続できないのだと思います。 名前付きパイプの場合は信頼関係接続でもそうでなくてもまずSQL-Serverがアプリを実行しているユーザーを認識できないと接続はできません。 手で実行すると接続できるのは、OSにログインしているユーザーはSQL-Server側で認識できているからです。 このようなケースではActiveX DLLをコンポーネントサービスに登録して特定ユーザーが実行している状態を作るか、ネットワークライブラリをTCP/IPソケットに変更して信頼関係接続ではなくSQL-Server認証で接続すればOKです。

  • PowerOn
  • ベストアンサー率62% (5/8)
回答No.1

Shellで呼び出すと、ユーザーが変わってしまうようですよ。 サービス化して、サービスのユーザで実行されるようにするとか、EveryOneでのアクセス権を許すとかしないといけないようです。 以前、Runasで何とかならないかとやってみたのですが、うまくいきませんでした。 想像なのですが、タイムアウトするような処理をExeに分離しようとしているとかですか? それなら、DLL内で別スレッドを呼ぶとかで回避できないでしょうか?

関連するQ&A

  • ASPを用いてSQLServerからのデータ取得ができません。

    ASPを使ってSQLServerからのデータ取得ができません。 クライアントのPCから、Webサーバ経由でDBサーバへアクセスすると、 『[Microsoft][ODBC SQL Server Driver]分散トランザクション エラー』 というエラーメッセージが表示されます。 WebサーバとDBサーバが同一PC上にある場合は、問題なく実行できます。 また、同じテーブルを使って、簡単なサンプルコードを実行した場合では、WebサーバとDBサーバが別々のPC上にあっても問題なく動きます。 原因はIIS、もしくはSQLServerの設定にあるのか、それともASPファイルのソース自体にあるのか、わかりません。 どなたかご存知の方、よろしくお願いします。 DBとの接続はADO接続で、環境は、 Webサーバ/WindowsXP Pro、IIS 5.0 DBサーバ/WindowsXP Pro、SQLServer2000 を使っています。

  • ASP.NETでSQL-SERVERへの接続方法

    最近、ASP.NETの勉強をはじめました。テキストを見ながらサンプルプログラムを作成しているのですが、SQL-SERVERへのDB接続方法がうまくいきません。 Dim conn As String = "data source=????;user id=sa;password=;initial catalog=SampleDb" Try   Dim objConn As New SqlClient.SqlConnection   objConn.ConnectionString() = conn   Dim comm As New SqlClient.SqlCommand(sql, objConn)   objConn.Open() ソース一番上の????の部分に何と記述すればいいかわかりません。テキストには localhost と記述されています。コンパネの「ODBCデータソース」のDSNやサーバ名を記述しても無理でした。 ASP開発で使用していたDB接続 Conn = "PROVIDER=SQLOLEDB;SERVER=サーバ名;DATABASE=YUSODB;UID=sa;PWD=;" を試したりしたのですが、無理でした。 どなたかご教授お願いします。

  • ASPからDB2への接続方法

    タイトルのとおりですが、ASP(VBスクリプト)からDB2に接続する方法について色々と教えて下さい。 現在は以下のようなソースで”一応”接続できています。 Set objConn = CreateObject("ADODB.Connection") strConn = "DSN=testdb;UID=user;PWD=pass" objConn.Open strConn しかし動作があまりにもっさりしているので他の方法を検討したいのです。 ちなみに上記はADO接続?ODBC接続?なんでしょうか? Oracleのoo4oを使用した接続「CreateObject("OracleInProcServer.XOraSession")」 みたいな方法ってDB2にはないのでしょうか? またそれ以外でも使える方法、あるいはサンプルソースが載っているHP等ありましたら教えて下さい。 「?」ばかりで申し訳ありませんが宜しくお願いします。 尚、環境がまだはっきりしないのですが  WEBサーバ :Win2K          IIS5.0  DB     :DB2 Ver7~8(UNIX版) てな感じになるかと思います。 しかしながら上記のソースはDB2 Ver8 PE(Win版)で使ったテスト用なのです・・・。 宜しくお願いします。

  • Windows2000 と SQLServer2000 と IIS5.0 の組み合わせでASPが動かない

    今、WindowsNT SP6と IIS と SQLServer2000を使って、 (すべて1つのPCの中にインストールしてあります) WEB側から、サーバーのデータベースの中を 検索し、参照するプログラムを動かすことができています。 同じことを、Windows2000 にしてやろうと しているのですが、 Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 となり、参照することができません。 ODBCの設定は合っていると思うのですが、 Windows2000 ではできないのでしょうか? ユーザーの設定とかでしょうか?権限の問題? どなたか教えてください。困ってます。 足りない情報があれば補足致します。

  • SQLServerの接続が突然できなくなった

    SQLServer2000 を使用しています。 海外拠点のSQLServer(2000)とインターネットVPN経由でDTSでデータの交換をする ジョブを使っていました。 問題なく動作していましたが、ある日突然、失敗するようになり、 SQLServerのログインすら出来なくなってしまいました。 (PINGは通るし、名前解決も問題ありません。エクスプローラーでアクセス可能です) 不思議なことに私の端末からの接続は問題なく、動作も正常です。 そして、海外拠点のサーバーから本社のサーバーへの接続も正常です。 また、海外拠点の他のサーバーへの接続も正常です。 問題のサーバーのみ、一方通行です。(アクセスされるほうは正常) おかしくなったあと、サーバー名でなくIPアドレスでログインしたら 接続できたのですが、しばらくたつと、IPアドレスのログインすらできなくなり、 いったい何がなんだか訳がわかりません。 エラー内容ですが、EnterpriseManagerからサーバーに接続すると下記のエラーが でます。(その他、ジョブの実行、DTSの実行もすべてこれで失敗します) SQL Server が存在しないか、アクセスが拒否されました。 ConnectionOpen (Connect()).。 海外拠点とのやりとりで夜間バッチでデータ交換ができないと 運用的に厳しくなんとか復旧したいとおもいます。 同じような境遇にあるかたいらっしゃいましたら、 情報をいただけると幸いです。

  • ActiveX → VB を起動するとCreateObjectできない。

    初めまして。 2003Server+IIS6.0の環境でASP内のActiveXからShell関数でvbのexeを実行させる処理を作成しております。 サーバーから直接exeを実行させると正常に動くのですが、Web上からasp→ActiveX→exeを起動させるとテキストに書き込む処理はできるのですが、「CreateObject」文で「ActiveX コンポーネントはオブジェクトを作成できません」というエラーが返ります。 VB内でなぜ「CreateObject」が出来ないのかご存知の方はいますでしょうか。 宜しくお願いいたします。

  • Win10(IIS) ASPでMDBをアクセス不可

    とても困っております。お願いします。 Windows7 Pro 32ビットでIISを有効にし、稼働していたASPを Windows10 Pro (OS:1903)64ビットに移行したところ、mdbへの接続でエラーになりました。 Microsoft Officeですが、 Windows7は、Office Professional Plus 2010(32ビット) Windows10は、Office Professional Plus 2016(64ビット)です。 Const strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\inetpub\wwwroot\nwgp\MDB\term.mdb" Set cnn = Server.CreateObject("ADODB.Connection") cnn.Open strConn  ←ここでエラー発生 この場合、on error resume next を入れても、「Webサイトはページを表示できません」と表示されます。 OLEDB.12をOLEDB.16に変更しても同じです。 mdbをaccdbに変換して、terma.ccdbに変えても同じでした。 Const strConn = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\nwgp\MDB\term.mdb" にすると、「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」 というエラーが、err.descriptionで表示されます。 フォルダやファイルのアクセス権は、IIS_USERSもeveryoneもフルアクセスにしてあります。

  • IISの設定について

    IISの設定について質問させてください。 サーバにexeファイルを置いてIISにてエイリアスの設定をしてそのexeファイルをJavaScriptで実行しようとするのですが、どうしてもダウンロードになってしまいます。exeファイルの入っているディレクトリのエイリアスの権限設定はきちんと「実行(スクリプトを含む)」に設定してあります。 他にも設定する必要があるのでしょうか? 宜しくお願いします。 参考データ OS:NT4.0 Server

  • SQLServerに接続できない

    SQLServerを別PCにて稼動させて、クライアントPCよりVBAにて接続を試みているのですが、「SQLServerが存在しないか、アクセスが拒否されました。」と出て、接続が出来ません。 何が問題なのか分からず、困っています。 どなたかご教授頂けないでしょうか。 (ローカルで接続する分には、接続が出来る事を確認しています。) また、環境は以下のような形です。 ServerPC名:AAA SQLバージョン:SQLServer2005Express ServerOS:Win2003Server ログイン用アドレス:TAROU クライアントのVBAは以下のような記載をしています。 ------- Dim strSQL As String Dim rsTmp As ADODB.Recordset Dim DB As String DB = "Provider=MSDASQL;Driver={SQL Server};" & "Server=AAA\SQLEXPRESS;" & "Database=TEST;" & "" Set rsTmp = New ADODB.Recordset strSQL = "SELECT * From TEST_TABLE" rsDeli.Open strSQL, DB, adOpenStatic, adLockOptimistic -----------------

  • IIS7に接続できない

    あるサーバ(OS不明)に、IIS7がインストールされています。(IP:192.168.XXX.XXX) サーバと同じ部屋にあるwindows7パソコンからIEにて、http://192.168.XXX.XXX を 指定し実行すると、IIS7のトップ画面が表示されますが、ルータ外のwindows7パソコン にて同様の操作をすると、”このページは表示されません”となります。 ルータ外のwindows7パソコンから接続するにはどうすればよいでしょうか? サーバのファイヤーウォールやルータ設定は、情報が無い状況です。 以上、よろしくお願いします。