2016-08-12 25 views
3

私はFirebird 2.0データベースをリモートのWindows XP PC上で実行しています。次のようにADO.net接続プロバイダを使用
、私は接続を設定:リモートデータベースでFirebirdの "unavailable database"エラーを解決する方法はありますか?

Dim x As New FirebirdSql.Data.FirebirdClient.FbConnectionStringBuilder 
x.Database = "[hostname]:FileShare:/db/REMOTE_SVR.FDB" 
x.UserID = "SYSDBA" 
x.Password = "masterkey" 

Dim y As New FirebirdSql.Data.FirebirdClient.FbConnection(x.ConnectionString) 
y.Open() 

接続を開こうとメッセージ「利用できないデータベース」と、FbExceptionを上昇させます。

ODBCドライバをダウンロードし、それらの設定を使用して接続しようとすると、同じエラーメッセージが表示されます。

開発環境にデータベースファイルをコピーし、これらの設定(Firebird 2.0 Serverのローカルインストール)でx.Database = "c:\testdb\REMOTE_SVR.FDB"に接続できることを確認しました。

Firebird 2.0 ServerがリモートPC上で動作していることを確認しました。 DBがあるファイル共有には、ログインやアクセス権が必要ありません。

私はおそらく何かダムをやっているのですが、私はアイデアがありません。

答えて

5

デフォルトでは、Firebirdはネットワーク共有上にあるデータベースファイルを開きません。このファイルは、サーバーの物理ディスク上に存在する必要があります。これは、ファイルの不正なロックや不十分なロック(例えば、異なるマシンからの複数のFirebirdサーバープロセスによってアクセスされた場合など)による破損からデータベースを保護するために行われます。

したがって、Firebirdサーバープロセスをホストするマシンの実際のドライブの1つにデータベースを移動する必要があります。

+0

[Firebirdのマニュアル](http://firebirdsql.org/manual/qsg2-databases.html)からのリンクで、有効なTCP/IP接続文字列を使用してリモートデータベースに接続する方法を説明しています。私は何かを誤解していますか? – Frosty840

+1

@ Frosty840はい、あなたが誤解しているのは、あなたがFirebirdサーバーに接続していて、Firebirdサーバーがそのマシンのローカルデータベースにアクセスしているということです。それは動作します。ただし、Firebirdサーバに接続していて、ネットワーク共有にあるデータベースに接続したい場合は、デフォルトでFirebirdプロセスでは許可されないため、破損を防ぐことができます。 –

+1

@ Frosty840つまり、Firebirdデータベースファイルは決してネットワーク共有上に置くべきではありません。「共有」する唯一の方法はFirebirdサーバープロセスです。 –

関連する問題