powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Коннект с 3 серверами
13 сообщений из 13, страница 1 из 1
Коннект с 3 серверами
    #35450487
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите режить следующую задачку:
3 SQL сервера, на них идентичные базы данных (по ~7 баз на каждом) (тренировочный, основной, терминальный). Пишу на VFP9, использую SQLCONNECT и SQLSTRINGCONNECT

Как из фокса (программно) обратиться к необходимой базе данных , расположенной на необходимом серверe?

SQLSTRINGCONNECT - не устраивает тем, что с каждым запросом к базе на сервере Х приходится
руками определять сервер, базу и т.д.

Возможно как-то можно привить данные в ODBC?

На крайняк, хотя бы как определить к какому серверу выполняется запрос в данный момент

Заранее спасибо.
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35450518
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Местами администраторSQLSTRINGCONNECT - не устраивает тем, что с каждым запросом к базе на сервере Х приходится
руками определять сервер, базу и т.д.

А зачем с каждым запросом? А почему нельзя один раз подключится и работать?
Сначала создаем себе трудности и потом их героически преодолеваем?
А что мешает сделать сразу три подключения к этим трем серверам? Один раз, в начале программы?
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451180
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же писал, что базы идентичные, например:
server1:
db1
db2
db3
server2:
db1
db2
db3
server3:
db1
db2
db3
Как будет выглядеть программный код в случае, когда хочется:
Выбрать данные с сервера server1 базы db2 и сразу
выбрать данные с сервера server3 базы db2, дабы сравнить, различия в данных?
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451196
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Местами администраторЯ же писал, что базы идентичные, например:
server1:
db1
db2
db3
server2:
db1
db2
db3
server3:
db1
db2
db3
Как будет выглядеть программный код в случае, когда хочется:
Выбрать данные с сервера server1 базы db2 и сразу
выбрать данные с сервера server3 базы db2, дабы сравнить, различия в данных?
Батенька, Вы хелп по функции (заметьте, именно функции!) SQLSTRINGCONNECT() читали? Что она возвращает? А первым параметром в SQLEXEC() что подставляете?
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451351
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администратор правильно тебе говорит Sergey Sizov. Делаешь 3 connect-a, получаешь 3 Handle и работаешь с тремя серверами.
Я так с ORACLE перекачиваю информацию на MSSQL.
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451528
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lsDSNLess="driver=SQL Server; server; uid; pwd"
nstHandle=SQLSTRINGCONNECT(lsDSNLess)

IF nstHandle<0
MESSAGEBOX('Сервер не доступен',16,'')
RETURN
ENDIF
tSap='"'+'select * from '+ALLTRIM(thisform.zapros.value)+;
IIF(!EMPTY(thisform.uslov.value),' where '+ALLTRIM(thisform.uslov.value),'')+;
IIF(!EMPTY(thisform.sortirov.Value), ' order by '+ALLTRIM(thisform.sortirov.Value)+' asc','')+'"'

? SQLEXEC(nstHandle, &tSap, "otvet")

IF USED('otvet')
SELECT otvet
BROWSE
ELSE
MESSAGEBOX('Ошибка запроса',16,'')
ENDIF
SQLDISCONNECT(nstHandle)
IF USED('otvet')
SELECT otvet
USE
ENDIF


Вот так выглядит мой первый запрос к SQL серверу

lsDSNLess="driver=SQL Server; server; uid; pwd", если я задаю параметры для server, uid, pvd - окно выбора сервера, ввода пароля, логина не выдается и это хорошо, но тогда я не могу выбрать базу (как я уже говорил из у меня на серваке несколько), и соответственно SELECT не работает.
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451557
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Местами администраторlsDSNLess="driver=SQL Server; server; uid; pwd", если я задаю параметры для server, uid, pvd - окно выбора сервера, ввода пароля, логина не выдается и это хорошо, но тогда я не могу выбрать базу (как я уже говорил из у меня на серваке несколько), и соответственно SELECT не работает.
1. Ну так изучите синтаксис строки подключения к серверу и вставьте в эту строку имя базы.
Пример:
Код: plaintext
1.
?SQLStringConnect('SERVER='+lcServer+';DRIVER=SQL SERVER;UID='+lcUser+';PWD='+lcPassword+;
	';APP='+_Screen.Caption+';DATABASE='+lcBase+';LANGUAGE=русский', .T.))
Надеюсь, переменные сможете создать и правильно заполнить?
2. Даже подключившись к серверу без указания базы данных можно обращаться к объектам нужной базы прямо в запросе.
Пример:
Код: plaintext
?SQLEXEC(Handle, 'Select * from master..syslogins')
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451617
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администраторlsDSNLess="driver=SQL Server; server; uid; pwd", если я задаю параметры для server, uid, pvd - окно выбора сервера, ввода пароля, логина не выдается и это хорошо, но тогда я не могу выбрать базу (как я уже говорил из у меня на серваке несколько), и соответственно SELECT не работает.
А кто мешает послать на сервер запрос для выбора нужной базы?

Код: plaintext
=SQLExec(nstHandle,"USE MyBase")

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

Какие именно реквизиты используются в строке подключения можно посмотреть здесь

SQL Server 2005

Один из вариантов

Код: plaintext
1.
2.
lsDSNLess="DRIVER=SQL Server;SERVER=MyServer;UID=MyUser;PWD=MyPassWord"+;
"APP=Имя приложения;WSID=Идентификатор компьютера;" +;
"DATABASE=MyBase;Trusted_Connection=Yes"

Реквизиты APP и WSID - не обязательны. Это просто комментарии. Но по ним можно определить кто установил соединение.

DataBase - это как раз имя нужной базы данных

Trusted_Connection - это режим доверительного соединения. Т.е. режим Windows - аутентификации. Если он установлен в Yes и SQL-сервер поддерживает этот режим, то логин и пароль в строке подключения - игнорируются. Используется логин и пароль при входе в Windows
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451618
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот теперь во все въехал - в моем help (О.В. Бартеньев книга по VFP) в описании к SQLSTRINGCONNECT нет ни одного слова по поводу DATABASE и LANGUAGE.
Посоветуйте толковый HELP
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451640
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Местами администраторВот теперь во все въехал - в моем help (О.В. Бартеньев книга по VFP) в описании к SQLSTRINGCONNECT нет ни одного слова по поводу DATABASE и LANGUAGE.
Посоветуйте толковый HELP
Строка коннекта зависит от того, куда подключаешься, а не откуда. Для фокса это просто строка, он про ее содержимое не знает. Потому и хелп по функции, которая просто передает строку дальше никак ее не разбирая, туn совершенно не при чем. Подключаетесь к MS SQL Server? Вот в его доке и ищите описание строки подключения.
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451648
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451678
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администраторВот теперь во все въехал - в моем help (О.В. Бартеньев книга по VFP) в описании к SQLSTRINGCONNECT нет ни одного слова по поводу DATABASE и LANGUAGE.
Посоветуйте толковый HELP
http://www.connectionstrings.com/
С уважением, Алексей
...
Рейтинг: 0 / 0
Коннект с 3 серверами
    #35451731
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо за помощь!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Коннект с 3 серверами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]