Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Sybase ASA, ASE, IQ Новый топик    Ответить
 [ASA] Выполнить скрипт из командной строки  [new]
avtor2017
Guest
Доброго дня!
dbisql версии 12.0.1.3152.
В папке c:\test лежит база test.db. В оконном режиме подключаюсь к ней без проблем, указав логин, пароль и путь. Нужно выполнить скрипт из командной строки
dbisql -с "START=dbsrv12 -c 8M;Server=test;DBN=test;DBF=c:\test\test.db;uid=DBA;pwd=SQL" mycom.sql

Результат:
You are not connected to a database.

Что я делаю не так?
30 май 17, 12:41    [20522944]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
White Owl
Member

Откуда:
Сообщений: 12055
А у тебя точно серевер еще не запущен?
Если у тебя сервер уже работает, а ты повторно пытаешься его запустить в старт-стоп режиме, то может быть конфликт двух серверов пытающихся добраться до одного и того-же файла базы, в итоге второй сервер обламывается...
Да и запускать сетевой движок в старт-стоп режиме не кошерно.
Сделай:
dbsrv12 -c 8M c:\test\test.db
dbisql -c"ENG=test;uid=DBA;pwd=SQL" -nogui mycom.sql
30 май 17, 18:06    [20524755]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
Автор2017
Guest
Первая команда успешно:
TCPIP link started successfully

Потом:
C:\Program Files\SQL Anywhere 12\Bin32>dbisql -с "eng=test;uid=dba;pwd=sql" -nogui c:\test\mycom.sql
You are not connected to a database.

C:\Program Files\SQL Anywhere 12\Bin32>dbisql -с "dbn=test;uid=dba;pwd=sql" -nogui c:\test\mycom.sql
You are not connected to a database.

C:\Program Files\SQL Anywhere 12\Bin32>dbisql -с "eng=test;dbn=test;uid=dba;pwd=sql" -nogui c:\test\mycom.sql
You are not connected to a database.


Кстати, в оконном режиме к запущенной базе тоже подключиться не получается. Это нормально?
30 май 17, 18:28    [20524850]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4171
Я рекомендовал бы
dbsrv12 -n TEST -x TCPIP -c 8M c:\test\test.db
т.е. имя енжина test, коннект только по TCP/IP, ограничение памяти в 8 метров, имя базы test
dbisql -c "ENG=TEST; commlinks=tcpip{ip=..., port=...}; dbn=TEST;uid=DBA;pwd=SQL" mycom.sql
А что у вас d mycom.sql, ведь там то же можно задавать параметры коннекта к базе...
30 май 17, 20:35    [20525262]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4171
Наврал
dbisql -c "ENG=TEST; commlinks=tcpip{HOST=..., port=...}; dbn=TEST;uid=DBA;pwd=SQL" mycom.sql
Кстати когда вы запускаете сервер, то там пиктограмка должна светится...
30 май 17, 20:38    [20525271]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
Автор2017
Guest
Sergey Orlov
А что у вас d mycom.sql, ведь там то же можно задавать параметры коннекта к базе...
Там пока простой инсерт для проверки. Как там задавать?

Sergey Orlov
dbisql -c "ENG=TEST; commlinks=tcpip{HOST=..., port=...}; dbn=TEST;uid=DBA;pwd=SQL" mycom.sql
А в HOST и port что писать, имя своего компа? А если на другом выполнять (имя не известно)?

Sergey Orlov
Кстати когда вы запускаете сервер, то там пиктограмка должна светится...
В трее? Да, молния появляется, если в оконном режиме коннектиться. И немного другая, когда dbsrv.
30 май 17, 21:22    [20525361]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
avtor2017
Guest
Выполнил последовательно из командной строки
dbsrv12 -n TEST -x TCPIP -c 8M C:\test\test.db
dbisql -c "ENG=TEST; commlinks=tcpip{HOST=127.0.0.1,port=2638}; dbn=TEST;uid=dba;pwd=sql" c:\test\mycom.sql
dbstop -c "ENG=TEST; commlinks=tcpip{HOST=127.0.0.1,port=2638}; dbn=TEST;uid=dba;pwd=sql"

Получилось!
Но когда занёс всё это в батник, то он запускает базу и останавливает выполнение. Как с этим бороться?
31 май 17, 10:47    [20526392]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4171
Если запускаем
dbsrv12 -n TEST1 -x TCPIP -c 8M c:\test\test.db
то
Автор2017
Sergey Orlov
А что у вас d mycom.sql, ведь там то же можно задавать параметры коннекта к базе...
Там пока простой инсерт для проверки. Как там задавать?

пишем в mycom.sql
CONNECT USING 'UID=DBA;PWD=SQL;DBN=TEST;ENG=TEST1;'
Автор2017
Sergey Orlov
dbisql -c "ENG=TEST; commlinks=tcpip{HOST=..., port=...}; dbn=TEST;uid=DBA;pwd=SQL" mycom.sql
А в HOST и port что писать, имя своего компа? А если на другом выполнять (имя не известно)?

HOST=<ip адрес компа на котором запущен энжин>
port=<порт, который слушает энжин, по умолчанию 2638>
Можно без указания этих параметров
dbisqlc -q -c "eng=test1;dbn=test;uid=dba;pwd=vtng;commlinks=tcpip;" mycom.sql
при этом поиск будет произведен широковещательными пакетами, которые при наличии маршрутизаторов обычно не транслируются в другие сегменты
Автор2017
Sergey Orlov
Кстати когда вы запускаете сервер, то там пиктограмка должна светится...
В трее? Да, молния появляется, если в оконном режиме коннектиться. И немного другая, когда dbsrv.

Раз иконка другая, то могу предположить, что когда вы в оконном режиме коннектитесь, у вас запускается локальный движок, а не серверный..., т.е. слушает только локалхост, pipe ну и т.д., можно даже посмотреть ассоциацию вашей винды с файлами *.db, вполне возможно они завязаны только на локальный asa.
В принципе, если вы юзаете только локальный движок, то запуск локального энжина можно осуществить и в sql-файле
START DATABASE 'c:\test\test.db' AS test ON TEST1
CONNECT USING 'UID=DBA;PWD=SQL;DBN=TEST;ENG=TEST1'

Хочу только предупредить, все это у меня работает на 9-той версии, в 12-той может быть немного по другому...
31 май 17, 11:07    [20526483]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4171
avtor2017
Выполнил последовательно из командной строки
dbsrv12 -n TEST -x TCPIP -c 8M C:\test\test.db
dbisql -c "ENG=TEST; commlinks=tcpip{HOST=127.0.0.1,port=2638}; dbn=TEST;uid=dba;pwd=sql" c:\test\mycom.sql
dbstop -c "ENG=TEST; commlinks=tcpip{HOST=127.0.0.1,port=2638}; dbn=TEST;uid=dba;pwd=sql"

Получилось!
Но когда занёс всё это в батник, то он запускает базу и останавливает выполнение. Как с этим бороться?

А вы что конкретно хотите сделать, запустить базу, сделать изменения и потом остановить сервер, не забывайте, что у вас винда и dbisql оконная среда, юзайте dbisqlc...
31 май 17, 11:17    [20526516]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
avtor2017
Guest
Sergey Orlov
Раз иконка другая, то могу предположить, что когда вы в оконном режиме коннектитесь, у вас запускается локальный движок, а не серверный..., т.е. слушает только локалхост, pipe ну и т.д., можно даже посмотреть ассоциацию вашей винды с файлами *.db, вполне возможно они завязаны только на локальный asa.
В принципе, если вы юзаете только локальный движок, то запуск локального энжина можно осуществить и в sql-файле
START DATABASE 'c:\test\test.db' AS test ON TEST1
CONNECT USING 'UID=DBA;PWD=SQL;DBN=TEST;ENG=TEST1'

Хочу только предупредить, все это у меня работает на 9-той версии, в 12-той может быть немного по другому...
То есть, в sql пишу:
START DATABASE 'c:\test\test.db' AS test ON TEST1
CONNECT USING 'UID=DBA;PWD=SQL;DBN=TEST;ENG=TEST1'
insert storage_address_type select 2, ''

Далее в командной строке
dbisql c:\test\mycom.sql
Syntax error: 'CONNECT' was not expected here.
  File: "mycom.sql" on line 1, column 45
  START DATABASE 'c:\test\test.db' AS test ON TEST1
  CONNECT
  You can continue executing or stop.
1. Stop
2. Continue
Select an option:

Если же в sql так:
START DATABASE 'c:\test\test.db' AS test ON TEST1
go
CONNECT USING 'UID=DBA;PWD=SQL;DBN=TEST;ENG=TEST1'
go
insert storage_address_type select 2, ''
go

то
dbisql c:\test\mycom.sql
Could not start database engine
  [Sybase][ODBC Driver][SQL Anywhere]Invalid user ID or password
  File: "mycom.sql" on line 1, column 45
  START DATABASE 'c:\test\test.db' AS test ON TEST1
  You can continue executing or stop.
1. Stop
2. Continue
Select an option: 


Sergey Orlov
А вы что конкретно хотите сделать, запустить базу, сделать изменения и потом остановить сервер, не забывайте, что у вас винда и dbisql оконная среда, юзайте dbisqlc...
То есть, так?
dbsrv12 -n TEST -x TCPIP -c 8M C:\test\test.db
dbisqlс -c "ENG=TEST; commlinks=tcpip{HOST=127.0.0.1,port=2638}; dbn=TEST;uid=dba;pwd=sql" c:\test\mycom.sql
dbstop -c "ENG=TEST; commlinks=tcpip{HOST=127.0.0.1,port=2638}; dbn=TEST;uid=dba;pwd=sql"

То же самое, база запускается и дальше ничего, висит командное окно с мигающим курсором.
31 май 17, 12:02    [20526786]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
avtor2017
Guest
В итоге получилось так
dbisql -c "ENG=test; DBF=C:\test\test.db; dbn=test;uid=dba;pwd=sql" mycom.sql

Большое спасибо Sergey Orlov и White Owl!
31 май 17, 13:09    [20527112]     Ответить | Цитировать Сообщить модератору
 Re: [ASA] Выполнить скрипт из командной строки  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4171
avtor2017
В итоге получилось так
dbisql -c "ENG=test; DBF=C:\test\test.db; dbn=test;uid=dba;pwd=sql" mycom.sql

Большое спасибо Sergey Orlov и White Owl!

при этом у вас запустился локальный энжин... Доступа к которому из сети нет...
31 май 17, 14:00    [20527365]     Ответить | Цитировать Сообщить модератору
Все форумы / Sybase ASA, ASE, IQ Ответить