2015-11-02 5 views
0

Недавно я принял проект от компании. Мне нужно отобразить данные из базы данных. Я получил файлы на своем локальном компьютере и создал программу по своему вкусу, но когда я заменяю путь и источник данных в строке подключения, возникает ошибка. Погрешность гласит, чтоКак подключиться к удаленной базе данных Firebird в C#

FirebirdSql.Data.FirebirdClient.FbException (0x80004005): Your user name and password are not defined. Ask your database administrator to set up a Firebird login. 

Итак, после этого я скопировал базу данных на своем локальном компьютере, имеющем доступ к этому удаленному серверу. Я изменил строку подключения на место, где находится БД на локальном компьютере. Используется то же имя пользователя и пароль, а затем соединение работает.

Больше о своем сервере. Сервер настроен для программы, которая подключается к своей БД и запускается на сервере. Сотрудники компании работают с этой программой на своих локальных компьютерах. У меня нет прямого доступа к этому серверу, так как сервер вообще не подключается к Интернету. Я использовал teamviewer для тестирования своей программы.

Так вот моя строка соединения, как удаленный и локальный

Строка соединения, которые следуют для своей сети

connectionString = "Server=192.168.1.10;User=sysdba;Password=masterkey;Charser=NONE;Database=\\192.168.1.10\\DB\\DB.fdb"; 

Строка соединения, которые следуют для локального ПК в компании я тестировал при использовании teamviewer.

connectionString = "Server=localhost;User=sysdba;Password=masterkey;Charser=NONE;Database=C:\DB\DB.fdb"; 

ПРИМЕЧАНИЕ. Я не уверен, может ли программа, используемая сотрудниками, вмешиваться в созданную мной.

ответ

0
  1. Проверьте с ISQL, если вы можете подключиться к базе данных, см this article
  2. Проверьте код в примере на Firebird site
  3. Проверяйте aliases.conf
  4. Использовать инструмент с графическим интерфейсом, как IBExper управлять пользователи и базы данных

В любом случае, по соображениям безопасности, лучше использовать другую вместо sysdba.

+0

Благодарим вас за ответ. Проблема с этапом 1 заключается в том, что я не знаю абсолютного пути к базе данных с сервера.Файлы являются общими, поэтому я знаю только путь из общей папки. Я дам ему повод и просто угадаю, что папка делится либо с программными файлами, либо с корнем C: \. Спасибо за информацию, которую я бы определенно рассмотрел и даю отзывы. – SandMan

+0

@SandMan Вы ** не можете ** получить доступ к общей базе данных Firebird. Вам нужно получить доступ к нему через сервер Firebird. –

0

Пароли для firebird являются локальными для сервера (в его security2.fdb). Если вы скопируете базу данных на свой локальный компьютер (это указывает на слабое качество BTW) и получите доступ к ней через локальный сервер Firebird, он будет использовать security2.fdb этого локального компьютера. Пароль sysdba, который у вас есть, действителен на вашем локальном компьютере (это по умолчанию Firebird).

Очевидно, что пароль на сервере отличается. Вам нужно узнать, что такое пароль, или попросить своего DBA предоставить вам определенную учетную запись.

Что касается вашего ответа на другой ответ, что база данных находится в общей папке: не делать этого. К базам данных Firebird следует обращаться один (или несколько) серверных процессов на машине , такой же. Клиенты и т. Д. Должны подключаться через сервер, а не открывать общий файл. Попытка открыть файл общей базы данных по умолчанию заблокирована, но если это возможно, это может привести к повреждению базы данных; также наличие базы данных в общей папке - это плохая практика безопасности.

Смежные вопросы