|
|
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Мне дали задание, но я не могу задавать по нему вопросы, поэтому я обращаюсь к вам как к спецам.(т.к. не совсем ясно, что от меня требуется) Вот оно: 1) Нужно установить соединение с сервером. 2) Вывести все базы данных (схемы в случае Oracle), доступные пользователю. 3) Найти все таблицы в базе данных (схеме в случае Oracle), кроме системных. Ну и далее, приложение должно уметь (со стороны клиента) создавать/удалять таблицу, редактировать её и т.п. Мои вопросы: 1)Что значить "установить соединение с сервером" - может быть, имеется в виду, что должен быть Web service, который будет предоставлять требуемые услуги? Или что-то другое? 2) Как найти все базы данных на сервере, доступные пользователю? И все таблицы, в них содержащиеся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:27 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Конкретно по Oracle 1. "Установить соединение с сервером" - значит подключиться к нему. К Web-сервису, в общем случае, не имеет никакого отношения. Конкретная реализация зависит от используемого клиентского средства 2. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:55 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
1) Дело в том, что нужно найти все доступные БД, не только Oracle. 2)user_tables, all_tables, dba_tables - это что, стандартно для Oracle, и что такое вообще схемы Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:11 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Urt1) Дело в том, что нужно найти все доступные БД, не только Oracle. 2)user_tables, all_tables, dba_tables - это что, стандартно для Oracle, и что такое вообще схемы Oracle? 1. Не знаю, как для MS SQL, но, в общем случае, задача не тривиальная (конкретно, по Oracle когда-то обсуждали в форуме, но нормального решения, в общем случае так и не нашли - как мне помнится). Хотя, смотря что понимать под базой данных, судя по фразе Вывести все базы данных (схемы в случае Oracle) . Например, в dBase под базой данных понимался, насколько помню, один dbf-файл 2. Да, стандартно. Схема - это набор объектов (таблицы, индексы, представления и др.), принадлежащие конкретному пользователю (имена пользователя и схемы совпадают) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:25 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Так что, единственное решение - создать на сервере БД (любую), в которой будет храниться список всего, что мы имеем - для Oracle, MS SQL и т.д., для каждого генерировать свой код - OleDbConnection.ConnectionString и иже с ним? Это же сдохнуть можно! Нет ли более универсальнлй возможности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:30 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Urt - вы абсолютно уверены, что правильно поняли задание ? Потому что на одном _сервере_ баз данных может существовать _несколько_ баз данных. Очень похоже, что вам нужно подключиться к серверу Oracle и опубликовать список баз, доступных пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:43 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Опять же по Oracle, т.к. в MS SQL не силен. Если я сажусь за незнакомую машину, которая имеет доступ к Oracle, я ищу директорий ORACLE_HOME\network\admin. Там д.б. файл sqlnet.ora, в котором задается метод доступа к Oracle (т.к. они могут быть различны). Самый распространенный - c пом. файла tnsnames.ora, который находится там же (однако есть и другие методы - с пом. файла hosts и с пом. LDAP-directory). В этом файле прописаны пути к базам. Но это не абсолют - я могу прописать доступ к базе, которая в настоящий момент не используется. Проверить, возможен ли доступ к прописанной базе можно с пом. команды tnsping <alias>. Если я нахожусь непосредственно на сервере, то там вместо tnsnames.ora можно смотреть файл listener.ora и т.д..... Т.е. я себе не представляю, как можно решить задачу в общем виде да еще программным путем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:48 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Alexey KudinovОчень похоже, что вам нужно подключиться к серверу Oracle и опубликовать список баз, доступных пользователю. Не совсем то - сначала указывается сервер - в диалоговом окне(это может быть Oracle, MS SQL или что-то другое), а я должен выдать пользователю все доступные ему БД, предоставить возможность их менять(если у него есть права) и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:50 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Очень похоже, что вам нужно подключиться к серверу Oracle и опубликовать список баз, доступных пользователю Не совсем так. Базой данных управляет экземпляр (instance), которых действительно может быть несколько на одной машине (еще несколько экземпляров могут работать с одной базой, но сейчас об этом говорить не будем). Причем в конктретный момент времени часть экземпляров м.б. запущена, а часть нет. Узнать в общем случае, сколько экземпляров живут в настоящий момент, нельзя иначе, кроме как попробовать законнектиться к каждому из них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:54 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Urt Alexey KudinovОчень похоже, что вам нужно подключиться к серверу Oracle и опубликовать список баз, доступных пользователю. Не совсем то - сначала указывается сервер - в диалоговом окне(это может быть Oracle, MS SQL или что-то другое), а я должен выдать пользователю все доступные ему БД, предоставить возможность их менять(если у него есть права) и т.п. Не совсем удачный способ, т.к. в зависимости от сервера м.б. разные возможности работы с ними (вплоть до отличий в SQL). Впрочем, не хочу затевать дискуссию на эту тему, т.к. это неоднократно обсуждалось в "Сравнение СУБД", "Проектировании СУБД", "Delphi" (это где я видел) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:58 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
tru55Не совсем удачный способ, т.к. в зависимости от сервера м.б. разные возможности работы с ними (вплоть до отличий в SQL). Думаю, что не надо делать это на уровне SQL. 2 Urt Раз вопрос стоит так, то пусть создатели OLEDB провайдеров позаботятся о придостовлении соответствующего интерфейса по схеме. Например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:11 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Вдогонку How To Retrieve Schema Information by Using GetOleDbSchemaTable and Visual Basic .NET How To Retrieve Column Schema Using the DataReader GetSchemaTable Method and Visual Basic .NET ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:13 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Я узнал, как это для MS SQL можно - хранимая процедура - кажется, sp_tables - возвращает все БД; а с помощью INFORMATION_SCHEMA.TABLES узнаём все таблицы в ней. Ура! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 18:34 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
UrtЯ узнал, как это для MS SQL можно - хранимая процедура - кажется, sp_tables - возвращает все БД; а с помощью INFORMATION_SCHEMA.TABLES узнаём все таблицы в ней. Ура! Вы все-таки хотите сделать это с помощью SQL ? sp_databases - список баз, к которым пользователь имеет доступ sp_tables - список таблиц текущей БД, к которым пользователь имеет доступ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 18:48 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov UrtЯ узнал, как это для MS SQL можно - хранимая процедура - кажется, sp_tables - возвращает все БД; а с помощью INFORMATION_SCHEMA.TABLES узнаём все таблицы в ней. Ура! Вы все-таки хотите сделать это с помощью SQL ? Нет, нужно и для других, но первый вариант моего application уже работает для MS SQL, что уже приятно. Попробую теперь с GetOleDbSchemaTable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 18:52 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
И ещё - кажется, этим методом мы узнаём все таблицы в БД, но не все БД - ведь в Connection.ConnectionString указывается имя БД, которого мы ещё не знаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 19:02 |
|
||
|
Соединение с сервером
|
|||
|---|---|---|---|
|
#18+
UrtИ ещё - кажется, этим методом мы узнаём все таблицы в БД, но не все БД - ведь в Connection.ConnectionString указывается имя БД, которого мы ещё не знаем. А это имя можно опустить. Произойдет подключение к Default database Попробуйте Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 19:27 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=120&tid=1353805]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 194ms |
| total: | 342ms |

| 0 / 0 |
