Форум: "Начинающим";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];
Внизпуть к базе 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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.005 c