Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.06;
Скачать: CL | DM;

Вниз

путь к базе Firebird   Найти похожие ветки 

 
d@nger   (2009-10-16 09:12) [0]

Здравствуйте! Недавно начал изучать FireBird. Хочу сделать при первом запуске приложения, чтобы программа просила указать путь к базе firebird, но путь к БД Firebird указывается в следующем формате "server:D:\base\base.fdb", а opendialog выдает путь "\\server\base\base.fdb". как можно привести получаемый путь к формату Firebird. В ручную обрабатывать путь что то не очень хочется... :(


 
RWolf ©   (2009-10-16 09:30) [1]

в общем случае — никак; выяснить, какому локальному пути на сервере соответствует сетевой ресурс, нельзя. И вообще, расшаривать базы — это неправильно.


 
Медвежонок Пятачок ©   (2009-10-16 09:32) [2]

а opendialog выдает путь "\\server\base\base.fdb". как можно привести получаемый путь к формату Firebird. В ручную обрабатывать путь что то не очень хочется... :(

а в ручную и не получится получить строку коннекта из \\server\base\base.fdb

потому что она вообще может не иметь никакого отношения к правильной даже если подправить ее начало


 
Медвежонок Пятачок ©   (2009-10-16 09:34) [3]

это неправильно.

Это скорее бесполезно и ничего не дает.
Ни ембеддед ни нормальный сервер (на другом хосте) с таким файлом работать не будет


 
d@nger   (2009-10-16 09:55) [4]


> И вообще, расшаривать базы — это неправильно.

как не расшаривая получить доступ к БД?


 
RWolf ©   (2009-10-16 10:03) [5]


> как не расшаривая получить доступ к БД?

доступ уже есть, по факту наличия запущенного сервера Firebird.


 
Медвежонок Пятачок ©   (2009-10-16 10:21) [6]

с файлом данных работаешь не ты, а север.
ты работаешь с сервером и доступ к файлу тебе не нужен.

/*ты же все равно не умеешь с ним работать и не знаешь как он устроен*/


 
Рамиль ©   (2009-10-16 10:28) [7]

Ну если так хочется, то можно только через системные шары. Пользователь должен быть админом на машине с базами.
т. е. сторока должна иметь вид \\server\X$\Base\base.fdb


Delete(ConSt, 1, 2);
ConSt[Pos("\", ConSt)] := ":";
ConSt[Pos("$", ConSt)] := ":";


Только незачем это делать.


 
Медвежонок Пятачок ©   (2009-10-16 10:33) [8]

т. е. сторока должна иметь вид \\server\X$\Base\base.fdb

В этом случае протокол будет совсем другой (не тсп)
И не факт что он поддерживается сервером или клиентом


 
Медвежонок Пятачок ©   (2009-10-16 10:34) [9]

Пользователь должен быть админом на машине с базами.

зачем?


 
Медвежонок Пятачок ©   (2009-10-16 10:39) [10]

кроме всего прочего есть большое подозрение, что сервер пошлет вас лесом с такой строкой (указывающей на шару, пусть даже на его локальном диске)


 
Рамиль ©   (2009-10-16 10:41) [11]


> В этом случае протокол будет совсем другой (не тсп)

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

> зачем?

Не будет доступа к ресурсам C$, D$ и т. д.


 
Медвежонок Пятачок ©   (2009-10-16 10:46) [12]

Не будет доступа к ресурсам C$, D$ и т. д.

А он вообще зачем?
Процесс клиента никак не использует этот путь. Просто тупо передает еe серверу и все.


 
Медвежонок Пятачок ©   (2009-10-16 10:49) [13]

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

1. Две палки спереди - протокол уже не tcp
2. Подставление имени диска с баксом перед именем шары - это гадание на кофейной гуще. Файл может лежать глубоко в дереве папок а имя шары ни о чем не говорит. Оно и не обязано совпадать с именем физической папки.


 
Рамиль ©   (2009-10-16 10:51) [14]

Вах.
Ну как еще написать то?
ConSt := "\\server\C$\Base\base.fdb";
Delete(ConSt, 1, 2);
ConSt[Pos("\", ConSt)] := ":";
ConSt[Pos("$", ConSt)] := ":";
fbDB.DatabaseName := ConSt;

А доступ, что бы получить этот путь с помошью OpenDialog.


 
Медвежонок Пятачок ©   (2009-10-16 10:53) [15]

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


 
d@nger   (2009-10-16 11:37) [16]

Не расшаривая базу можно подключить через алиас. Я прописал в файле aliases.conf на сервере путь к БД... теперь как мне прописать в Делфи подключение к этому алиасу?
пробовал так

 IBDatabase1.Params.Clear;
 IBDatabase1.LoginPrompt:=False;
 IBDatabase1.DatabaseName:="server:myalias";
 IBDatabase1.Params.Add("user_name=SYSDBA);
 IBDatabase1.Params.Add("password=masterkey");
 IBDatabase1.Params.Add("lc_ctype=WIN1252");
 IBDatabase1.Connected:=True;

не получилось..


 
RWolf ©   (2009-10-16 11:41) [17]

всё правильно; я бы поискал ошибку в aliases.conf.


 
d@nger   (2009-10-16 11:47) [18]

вот текст файла aliases.conf


#
# List of known database aliases
# ------------------------------
#
# Examples:
myalias = d:\base\base.fdb

#
вроде все правильно


 
turbouser ©   (2009-10-16 12:05) [19]

server:myalias


 
RWolf ©   (2009-10-16 12:06) [20]


> пробовал так  
> не получилось..

скопипастил, запустил — работает.


 
d@nger   (2009-10-16 12:08) [21]

обнаружил еще один способ подключения к БД
если кликнуть 2 раза по компоненту IBDatabase, и в редакторе указать Connections: Remote, Server : Servername, Протокол TCP, и путь к БД относительно сервера, то при нажатии на кнопку TEST подключение есть..., НО я не нашел как эти параметры указать программным путем... как это сделать?


 
RWolf ©   (2009-10-16 12:09) [22]

это тот же способ.


 
RWolf ©   (2009-10-16 12:09) [23]

это тот же способ.


 
d@nger   (2009-10-16 12:09) [24]


> скопипастил, запустил — работает.

может быть нужно firebird перезапустить? у меня кстати версия 2.1.3


 
turbouser ©   (2009-10-16 12:09) [25]

Как именно

> d@nger   (16.10.09 11:37) [16]

> не получилось..

?


 
RWolf ©   (2009-10-16 12:10) [26]

не надо перезапускать; достаточно вписать строчку
myalias = d:\base\base.fdb
в aliases.conf, алиас доступен сразу же.


 
d@nger   (2009-10-16 12:14) [27]

вобщем все... я разобрался... мое решение при регистрации базы просто сделать поле
Имя сервера:
Путь к БД относительно сервера:

затем эти 2 значения соединить и вуаля... все будет работать... и даже папку с базой расшаривать не надо...

спасибо всем....



Страницы: 1 вся ветка

Текущий архив: 2009.12.06;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.009 c
2-1255841231
NaRuTo
2009-10-18 08:47
2009.12.06
Фокус 2-х и более TCustomControl ов


15-1255081017
Alkid
2009-10-09 13:36
2009.12.06
Плагины-переводчики


15-1255012142
Leonid Troyanovsky
2009-10-08 18:29
2009.12.06
Похороните меня за плинтусом


2-1256050979
CodeRz
2009-10-20 19:02
2009.12.06
Найти число длиной N


15-1254981541
Хм...
2009-10-08 09:59
2009.12.06
Самопроизвольное движение курсора мыши