3

VB.NET と適切な ODBC 接続を使用して、MySQL DB と SyBase - SQL Anywhere DB に接続するアプリケーションを作成しました。ログインしているユーザーに関係なく、このアプリケーションをバックグラウンドで実行し続けるサービスにする必要があるまで、これは正常に機能していました。

アプリケーションをサービスに組み込み、インストール後、サービスは MySQL DB に正常に接続できましたが、SyBase に接続すると次のエラーが発生します (接続文字列はアプリケーションで使用されているものとまったく同じであることに注意してください)。

ERROR [08001] [Sybase][ODBC Driver][SQL Anywhere]Database server not found

プロジェクト インストーラー - サービス プロセス インストーラー 1 はlocalsystemとして構成されます。

ここで最も気味が悪いのは、mysql 接続が成功し、同じアプリケーションがサービスではなく、sybase への接続が成功したことです。それがサービスにされると、それは失敗し始めました。Windows 7 64 ビット ワークステーションと VS 2010 を使用しています。

私はそれを修正するために過去1週間、あらゆることをやろうとしてきましたが、何も機能していないようです. アドバイスをいただければ幸いです。

4

2 に答える 2

3

DSN を使用して SQL Anywhere に接続しているようです。

まず、システム DSN として構成されていることを確認してください。次に、TCP/IP 接続プロトコル ( ODBC 管理 -> [システム DSN] タブの選択 -> リストで DSN を選択 -> [構成] -> [ネットワークへ移動] タブ) を使用しており、共有メモリを使用していないことを確認します。

共有メモリの使用は、SQL Anywhere DB サーバーに接続しようとする Win サービスからは機能しません。同じ接続文字列を使用してデスクトップ アプリから接続できるため、これが問題であると思われます。

これを機能させる 1 つの方法は、SQL Anywhere データベースをネットワーク サーバーとして起動することです ( [スタート] -> [すべてのプログラム] -> [Sql Anywhere 12] (またはセットアップによっては 11) -> [SQL Anywhere] -> [ネットワーク サーバー])。

これにより、dbsvr12.exe が実行され、TCP ポートで接続のリッスンが開始されます。

次に、Links=tcpipまたはHost=localhostを Win サービス接続文字列に追加して、試してみてください。

于 2012-11-22T07:52:47.540 に答える
0

Windowsサービスがシステムアカウント(あなたの場合)で実行されている間、単純なwinアプリがログに記録されたユーザーからの資格情報で実行されていることに注意してください。2つのオプションがあります。接続文字列を変更して特定のユーザーに接続するか(現在信頼できる接続を使用している場合)、Windowsサービスのログオンユーザーをユーザーに変更します。

于 2012-09-10T06:05:02.517 に答える