|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Здравствуйте. Я работаю с ASA 8.02.3601. Поставлена следующая задача с которой возникли трудности: необходимо создавать БД на одном сервере. Создаваться будут одинаковые экземпляры БД но сразными именами приложением. Поэтому необходимо узнать, как это делать с помощью SQL. В Sybase Central вроде бы всё работает - нажимаю Create DB и всё работает.... С Interactve SQL всё трудно: Соединяюся с сервером под DBA(сервер - "TestDB") пишу Код: plaintext 1. 2.
Говрит что всё классно - типа всё создано. Захожу в Sybase Central - там ничего нового. При повторном запуске транзакции, ругается - типа БД уже существует. Создавал пользователя, но соединится с этой новой БД никак не получилось - не могли бы вы разъяснить ситуацию. Заранее спасибо... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2005, 17:18 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
TiceЯ работаю с ASA 8.02.3601. Поставлена следующая задача с которой возникли трудности Если необходимость минуту подумать - это трудно, то что тогда легко? Говрит что всё классно - типа всё создано. Захожу в Sybase Central - там ничего нового. А переподключиться или ткнуть F5 на списке баз совсем лень? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2005, 10:59 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
У ASA немного другая идеология. На одном сервере (инстансе серверного процесса, не хосте, где размещается БД) может быть только одна база данных. Поэтому для новой базы нужно запускать новый "сервер". PS: Знатоки ASA, я правильно все изложил :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2005, 00:10 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
MasterZivУ ASA немного другая идеология. На одном сервере (инстансе серверного процесса, не хосте, где размещается БД) может быть только одна база данных. Поэтому для новой базы нужно запускать новый "сервер". PS: Знатоки ASA, я правильно все изложил :)) Нет ;) На одном Engine может много БД крутиться. Поднимаются они или сразу при старте сервера, перечисляясь в командной строке запуска сервера, или же во время работы операторами START DATABASE и STOP DATABASE. Ограничением выступает только размер страницы БД - нельзя в ходе работы сервера поднять БД, у которой размер страницы больше, чем тот, который использовался при запуске сервера, который берется как максимальный размер страницы из указанных БД при запуске. Идеология ASA в другом, в отличие от ASE: нет БД Master, в которой прописан список БД, присоединенных к серверу, каждая БД полностью автономна, т.е. свои логины, свои настройки и опции БД и т.д. Соответствующе в отличие от ASE нельзя в коде одной БД обратиться напрямую к обьектам другой БД, необходимо делать все равно Remote Server и работать с другой БД, работающей на том же сервере, как с удаленным сервером. Плюсы и минусы такой архитектуры очевидны: + У БД нет привязки к серверу. Ее легко переносить с сервера на сервер (скопировал и запустил), не задумываясь например, о переносе пользователей. + Легко запускать множество независимых серверов с множеством БД. Каждый из серверов обладает своим кэшем и ресурсами, все БД на одном сервере разделяют общие ресурсы сервера. Я например, всегда разделяю сервера на боевые (рабочие) и тестовые (девелоперские), чтобы при падении сервера в девелоперской или тестовой БД, рабочий сервер продолжал работать. После прохождения всех тестовых проверок, скрипт изменений схемы БД уже запускается на боевой БД, которая если является консолидированной, дальше его по репликации рассылает по удаленным узлам. - При такой архитектуре один проект разделять на несколько БД неудобно. Работа через Remote Server накладывает определенные ограничения, плюс, чтобы обратиться к обьектам другой БД придется создавать прокси-таблицы и прокси-ХП. - Оптимизатор ничего не знает об обьектах другой БД. В MSSQL или ASE при выполнении запроса к обьектам разных БД при построении плана запроса будут сразу учитываться все обьекты, использоваться индексы и статистика. Для ASA это будет идти как полноценное выполнение запроса к удаленному серверу, то есть оптимизатор разложит запрос на доступ к родным и чужим обьектам, пошлет выполнение частей запроса к удаленному серверу, далее уже будет соединять с родными обьектами. Думаю понятно, что в ASA при выполнении запроса на несколько БД можно получить значительный проигрыш в скорости. Соотвествующе, на ASA не выгодно разделять один проект на несколько БД. Должны быть очень веские причины. А если бы например у меня было несколько проектов, имеющих между собой общие таблицы, которые активно бы влияли на жизнь БД во всех проектах (то есть участвовали в запросах, ХП, триггерами изменяли другие таблицы в проекте), то я бы вообще наверное вынес бы эти общие таблицы в отдельную БД, эти же таблицы создал во всех проектах и через SQLRemote организовал бы подписку проектов на выделенную БД, как консолидированную. Получилось бы гораздо меньше кода, больше оптимизации и легче в управлении, чем если бы я пытался их сцепить через Remote Server. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2005, 06:28 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Tice Создаваться будут одинаковые экземпляры БД но сразными именами приложением. По-моему проще создать БД-образец, и при необходимости делать с него копии и переименовывать. ASCRUS - Оптимизатор ничего не знает об обьектах другой БД. В MSSQL или ASE при выполнении запроса к обьектам разных БД при построении плана запроса будут сразу учитываться все обьекты, использоваться индексы и статистика. Для ASA это будет идти как полноценное выполнение запроса к удаленному серверу, то есть оптимизатор разложит запрос на доступ к родным и чужим обьектам, пошлет выполнение частей запроса к удаленному серверу, далее уже будет соединять с родными обьектами. Думаю понятно, что в ASA при выполнении запроса на несколько БД можно получить значительный проигрыш в скорости. Так оно и есть. Фактически приходится получать данные с удаленного сервера, а затем привязывать их к данным родных объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2005, 06:40 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Dim2000А переподключиться или ткнуть F5 на списке баз совсем лень? Передподкоючался - тыкал f5. Не лень... :) Помоему это намного проще чем сразу лесть на форум :) Огромное спасибо всем кто ответил, постараюсь более детально описать сложившуюся ситуацию, чтобы получить правильный совет. На самом деле грозится проэкт на проверку маштабируемости софта, который мониторит производственную БД(могут применятся несколько СУБД, один из которых и есть ASA) - назову его "монитором". Протекать всё будет следующим образом: Приложением (аппликухой) создаётся БД на сервере. БД очень простая - 20 независимых таблиц+5 юзеров, на которых наложены какие-то ограничения. С MSSQL - создал БД, С Oracle - используется схема(фактически новый юзер) Аппликуха начинает нагружать только что созданную БД, какими то транзакциями отдельным потоком используя разных(а именно этих 5 тестовых) юзеров. Данная БД подключается в "Монитор", который в свою очередь начинает следить за БДтоько что созданной. Поскольку нам надо выяснить сколько именно БД, будет мониторится "Монитором" одновременно, то эти операции будут повоторятся(сколько раз? да пока не треснит). Имеет смысл процесс автоматизировать - чем собственно и занимаюсь. Всё таки мне кажется, что будет намного проще делать всё на одном сервере, во первых убирается один параметр(собственно сервер, для двух приложений) во вторых экономятся ресурсы компа(хотя может и нет). Если я не прав, поправьте меня. Если прав, то не могли бы вы мне показать пример, как создавать БД на сервере(с помощью SQL конечно, так я и сам могу;)) И если можна, как мне потом использовать эту БД Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2005, 12:29 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Tice wrote: > Передподкоючался - тыкал f5. Не лень... :) Помоему это намного проще чем > сразу лесть на форум :) Тогда я не понял, в чём проблема... > Если прав, то не могли бы вы мне показать пример, как создавать БД на > сервере(с помощью SQL конечно, так я и сам могу;)) Именно так, как сам же и написал в самом первом письме (там всё правильно - я проверял). Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2005, 12:41 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Dim2000Тогда я не понял, в чём проблема... Прошу прощения действительно всё работает, это меня проглючило.... Извеняюсь... Только открыть эту БД у меня всё равно не получается... Когда я в Sybase Central создавал БД сразу менял пароль админа - "Dba" при первом соединении и соединялся Юзер-Dba пароль - мой. Как тут быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2005, 16:43 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Tice wrote: > Когда я в Sybase Central создавал БД сразу менял пароль админа - "Dba" > при первом соединении и соединялся Юзер-Dba пароль - мой. Как тут быть? RTFM, как завещал Ильич... по умолчанию у DBA пароль SQL. Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2005, 17:01 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Привет ASCRUS, Есть вопрос по очень хорошему содержимому твоего ответа http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=215709&msg=1867109 Пожалуйста, ответь подробнее, если это возможно Сам вопрос по SAP Sybase SQL Anywhere ASA 17: почему при запуске процесса Dbsrv17.exe с несколькими файлами баз данных во всех основных утилитах для работы с SQL серверами (RazorSQL к примеру) доступна только одна база. Из ответа понятно, что нет централизованной Master таблицы описывающей все базы как MSSQL, но ведь Sybase Central показывает все смонтированные базы сервера (Engine). Какое есть решение? И заодно вопрос: как получить доступ ко всем таблицам всех баз SAP Sybase SQL Anywhere ASA 17 процесса Dbsrv17.exe с несколькими файлами баз данных в запросе Interactive SQL (dbisql.exe) из одного окна текущей базы в таблицу другой базы при наличии коннекта ко всем базам этого Egine? Если возможно, необходимо более подробное решение вопроса. Заранее благодарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 03:45 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
CFWDeveloperпочему при запуске процесса Dbsrv17.exe с несколькими файлами баз данных во всех основных утилитах для работы с SQL серверами (RazorSQL к примеру) доступна только одна база.Потому что это плохие утилиты не умеющие работать с SA. Если хочешь иметь доступ ко всем плюшкам от SA, используй Sybase Central. CFWDeveloper Какое есть решение?Ты знаешь какое имя у второй базы на сервере? Посмотри в Централе если не знаешь. Укажи в строке подключения своей утилиты дополнительный параметр: DBN=имябазы Читай в документации о всех дополнительных параметрах: http://infocenter.sybase.com/help/topic/com.sybase.help.sqlanywhere.12.0.0/dbadmin/da-conparm.html Для 17-ой версии сам ищи в своей документации. Отличия от 12-ой версии возможны, но вряд-ли много. CFWDeveloperИ заодно вопрос: как получить доступ ко всем таблицам всех баз SAP Sybase SQL Anywhere ASA 17 процесса Dbsrv17.exe с несколькими файлами баз данных в запросе Interactive SQL (dbisql.exe) из одного окна текущей базы в таблицу другой базы при наличии коннекта ко всем базам этого Egine?Во первых, задумайся, нафига тебе это нужно? Но если это действительно очень-очень-очень нужно, то сначала надо сделать ` create table ... AT ... ` для этого надо будет еще и ` create server ` сделать... Читать тут: http://infocenter.sybase.com/help/topic/com.sybase.help.sqlanywhere.12.0.0/dbreference/create-server-statement.html http://infocenter.sybase.com/help/topic/com.sybase.help.sqlanywhere.12.0.0/dbreference/create-table-statement.html http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.sqlanywhere.12.0.0/dbreference/from-statement.html ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 06:16 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
White Owl, Спасибо друг за ответ вместо меня. А то я уже ASA подзабывать стал, 17 версию и в глаза не видел :( P.S. Хотя вот прямо сегодня как раз про ASA и вспоминал, глядя на NATURAL JOIN в Vertica и думая, что явно KEY JOIN как в ASA не помешал бы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 19:16 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
ASCRUSСпасибо друг за ответ вместо меня. А то я уже ASA подзабывать стал, 17 версию и в глаза не видел :(Да я тоже :) ASCRUSP.S. Хотя вот прямо сегодня как раз про ASA и вспоминал, глядя на NATURAL JOIN в Vertica и думая, что явно KEY JOIN как в ASA не помешал бы :)Вот уж сколько СУБД и диалектов я ни пробовал, но WatcomSQL до сих пор считаю самым продвинутым и вкусным. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 18:49 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
White Owl и ASCRUS спасибо за отклик и ответы! Немного сложновато приведенное решение. Да и каждый раз использовать с новыми базами неудобно. Есть ли более простое решения доступа ко всем смонтированным базам SAP Sybase SQL Anywhere? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 21:05 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
30.03.2016 21:05, CFWDeveloper пишет: > Есть ли более простое решения доступа ко всем смонтированным базам SAP > Sybase SQL Anywhere? Нет и быть не может по одной весьма очевидной причине ;). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 10:50 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
CFWDeveloper, Если очень надо щупать все базы сервера в dbisql, то мысли такие Есть такая процедура sa_db_info, выдает список всех запущенных баз на сервере. Но чтобы ее вызвать надо иметь коннект хотя бы к одной. Можно завести файлик с пользователями и паролями к созданным и используя эти данные переключать коннект в dbisql к нужной базе. У меня серверов много, я в таком файлике еще и адреса серверов храню. В скриптах можно циклом пройти по всем серверам и или базам и залить процедуры, например Когда ты создаещь новую базу можно в этот файлик автоматом дописывать данные по новой базе. В общем как-то так, остальное за Вами ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 11:52 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Dim2000 и antand, спасибо за отклик! Но необходим доступ при запросе к таблицам из одного окна активной закладки одной базы к таблицам другой базы в этом же активном окне Interactive SQL dbisql.exe Remote Server & Proxy Tables - это единственное возможное решение? Есть UnityJDBC SourceBuilder с виртуализацией доступа. Однако при его использовании доступна только одна база сервера Sybase SQL Anywhere ASA. Может кто знает, как решить вопрос подключения нескольких разных баз одного сервера в UnityJDBC SourceBuilder? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 03:00 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
CFWDeveloper, А разве нельзя в UnityJDBC SourceBuilder создать несколько подключений с одним и тем же адресом одного и того же сервера ASA, но с разными именами баз данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 13:36 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
CFWDeveloperRemote Server & Proxy Tables - это единственное возможное решение? Если использовать только dbisql, то ты ограничен возможностями базы, с которой соединен Точнее базами, с которыми ты можешь установить соединение, но в каждый момент времени с одной. И возможностями баз ASA обмениваться данными с внешними приложениями. - Remote Server & Proxy Tables. Все объекты удаленных баз должны, к которым ты хочешь получать доступ, быть прописаны в базе, с которой ты соединен. В этом случае dbisql соединяется только с одной базой. - Перегонять и обрабатывать данные через файлы, поочередно connect/disconnect с разными базами - использовать web-сервисы. В базе, к которой соединен, ты используешь объекты логики, которые обращаются к web-сервисам других баз. Тыт тоже только одно соединение нужно. Вроде больше никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 14:07 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
Antand, благодарю за подробные ответы! antandА разве нельзя в UnityJDBC SourceBuilder создать несколько подключений с одним и тем же адресом одного и того же сервера ASA, но с разными именами баз данных? Так в том и вопрос в UnityJDBC SourceBuilder - доступна только одна база из нескольких - причём она первая при запуске сервера в командной строке. Если есть возможность посмотри пожалуйста - может есть известное решение? Может есть рабочий пример Connection String JDBC для Sybase SQL Anywhere с несколькими базами с одним процессом DbsrvXX.exe ? В SQuirreL SQL Client - там таже ситуация - доступна только одна база - может кто знает как подключить другие базы сервера Engine SAP Sybase SQL Anywhere с одним процессом DbsrvXX.exe ?? Есть в SQuirreL SQL Client и MultiSource Virtualization Plugin - но возникает ошибка: Sybase SQL Anywhere: Registering driver: com.sybase.jdbc4.jdbc.SybDriver Connecting to database... Exception during extract: java.lang.UnsatisfiedLinkError: no dbjodbc12 in java.library.path MSSQL: Registering driver: com.microsoft.sqlserver.jdbc.SQLServerDriver Connecting to database... Exception during extract: java.lang.UnsatisfiedLinkError: no dbjodbc12 in java.library.path ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2016, 02:15 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
CFWDeveloper, "Connection String JDBC для Sybase SQL Anywhere несколькими базами" Думаю что нет такого примера. параметр database=<определенной базе> и именно с ней ты получаешь коннект Если не указал параметр, то вроде сервер соединит тебя с первой, которая стартовала на сервере. Но только с одной. Пользователи хранятся в каждой базе свои, поэтому нельзя авторизоваться во всех базах одновременно в одном соединении. Вывод: или переключать коннект по разным базам или заведи еще одно соединение в UnityJDBC SourceBuilde с другой Connection String где укажи нужную базу. В UnityJDBC SourceBuilde вроде можно одновременно два соединения открыть ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2016, 13:03 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
antand, antandВывод: или переключать коннект по разным базам или заведи еще одно соединение в UnityJDBC SourceBuilde с другой Connection String где укажи нужную базу. В UnityJDBC SourceBuilde вроде можно одновременно два соединения открыть Пробовал - всё равно доступ к первой базе. Поэтому и интересуюсь проверенной строкой JDBC для подключения к другой базе сервера Sybase SQL Anywhere - ни в одном SQl Tools Browser кроме Subase Central доступ к другой (второй, третьей и т. д.) не удавалось получить ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2016, 13:36 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
CFWDeveloperПробовал - всё равно доступ к первой базе. Строки подключений покажите плиз: к одной базе и к другой ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2016, 11:38 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
antand, Connection string JDBC Sybase SQL Anywhere UnityJDBC jdbc:sybase:Tds:PC:2638/ENG=ServerName;DBN=DatabaseA;User=DBA;Password=sql jdbc:sybase:Tds:PC:2638/ENG=ServerName;DBN=DatabaseB;User=DBA;Password=sql И такая строка: jdbc:sybase:Tds:PC:2638/DatabaseB;User=DBA;Password=sql Доступ только к таблицам одной (DatabaseA) базы. В RazorSQL доступ тоже только к таблицам базы DatabaseA Sybase Central - есть доступ ко всем базам, но необходимо создание Remote Servers & Proxy Tables - это проверенное решение задачи доступа к другим базам одного сервера Sybase SQL Anywhere Для виртуализации доступа к базам данных необходима рабочая строка JDBC с указанием значения Driver Class и Driver Location (имени файла драйвера) для доступа к серверу Sybase SQL Anywhere с несколькими базами в одном серверном процессе DbsrvXX.exe ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2016, 18:00 |
|
Создание БД на ASA с помощью SQL
|
|||
---|---|---|---|
#18+
CFWDeveloper, Из документации по ASA "SQL Anywhere Data Access APIs » SQL Anywhere JDBC driver » Using the jConnect JDBC driver » Supplying a URL to the driver » Specifying a database on a server" Specifying a database on a server Each SQL Anywhere database server can have one or more databases loaded at a time. If the URL you supply when connecting via jConnect specifies a server, but does not specify a database, then the connection attempt is made to the default database on the server. You can specify a particular database by providing an extended form of the URL in one of the following ways. Using the ServiceName parameter jdbc:sybase:Tds:host:port?ServiceName =database The question mark followed by a series of assignments is a standard way of providing arguments to a URL. The case of ServiceName is not significant, and there must be no spaces around the = sign. The database parameter is the database name, not the server name. The database name must not include the path or file suffix. For example: Connection con = DriverManager.getConnection( "jdbc:sybase:Tds:localhost:2638?ServiceName=demo", "DBA", "sql"); Т.е. не надо ли указать ServiceName=DatabaseB? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2016, 21:40 |
|
|
start [/forum/topic.php?fid=55&msg=33263781&tid=2009725]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 285ms |
0 / 0 |