Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обратиться к таблице на другом сервере 
V
    Опции темы
JustNick
Дата 1.11.2007, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Доброго времени суток!
Подскажите плз, как мне сделать insert ... select с одного сервера на другой?
PM MAIL   Вверх
Servena
Дата 1.11.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Интересный вопрос. В книге написано: имя_сервера.название_базы_данных.схема.таблица, например: Server.Northwind.dbo.Orders
Попробуй, если вы с сервером в одной сети. Скажешь что оно говорит. Наверное, будут проблемы с авторизацией.
PM MAIL   Вверх
JustNick
Дата 1.11.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



К сожалению, на MySQL-е не работает такая схема. Он просто ругается и все:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.`banks`' at line 1

Запрос такой:
select * from server1.database1.banks;

Banks - это табличка.

Извиняюсь, не в тот раздел форума написала  smile 
На MySQL-е нужно...  smile 

Это сообщение отредактировал(а) JustNick - 1.11.2007, 18:22
PM MAIL   Вверх
Servena
Дата 1.11.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



А ты задавал этот вопрос на форуме МайЭсКъюЭля? Ато здесь вообщето немного другая тема.
PM MAIL   Вверх
thomas
Дата 1.11.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: нет
Всего: 65



JustNick, 
Привет.
Молодец, поднял настроение  smile 
Цитата

Запрос такой:
select * from server1.database1.banks;

Давно я так не смеялся. Без обид.  smile Просто стало очень весело.

Насколько я знаю, в синтаксисе SQL не предусмотрено обращение к серверу. Там "канают" только наименования таблиц.
А что касается серверов и баз данных то это задача приложения - соединиться с сервером, подключиться к определененой базе данных на нем.

Не знаю на чем вы там пишите и что, я на пример пишу в VS, и сделал бы это так.
1. Создал соединение с одним сервером и со вторым, т.е. два отдельных обьекта sqlConnection.
2.На основе этих соединений создал бы два ДатаАдаптера.
3.Создал ДатаСет.
Ну и 4. при обращении к серверам вызывал бы соответствующий ДатаАдаптер для выполнения моих sql-команд.
Типа заполнил таблицу ДатаСета данными с одного сервера, что то с ними сделал и заслал их на другой сервер.


Это сообщение отредактировал(а) thomas - 1.11.2007, 18:29


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Servena
Дата 1.11.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Цитата(thomas @  1.11.2007,  18:26 Найти цитируемый пост)
JustNick, 
Привет.
Молодец, поднял настроение  smile 


Это все возможно, используя MS SQL, и ничего смешного здесь нет. Но на счет MySQL - не знаю.

PM MAIL   Вверх
thomas
Дата 1.11.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: нет
Всего: 65



Servena, 
Да какая разница какой сервер от  "мелкомягких" или "мускул", SQL и там и там ОДИН.

Что бы выполнить sql-команду надо по любому сначала создать соединение с сервером и бд на нем.
Вот кусок кода для "мускула" 
Код

<?
    $server    = '127.0.0.1';
    $login        = 'vti_vad';
    $paswoord    = 'vti2007';
    $db        = 'vti_vad';

    $connection = mysql_connect($server, $login, $paswoord);
    mysql_select_db($db);

        $sql="SELECT * FROM tblForums";
    $result=mysql_query($sql);

        while($rows=mysql_fetch_array($result))
    { // ну и так далее
?>


создай еще одно подключение, но уже к другому серверу и юзай его.
Из sql-команды ВСЕ равно НЕ ПРОЙДЕТ.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Servena
Дата 1.11.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Так, мне стало интересно уже очень. В книге же написано, что можно с Аналайзера. 
Сейчас буду искать как. Нужно выяснить - возможно или нет. Хотя проблема с авторизацией очевидна.
PM MAIL   Вверх
JustNick
Дата 1.11.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Цитата(thomas @ 1.11.2007,  18:26)
[b] Не знаю на чем вы там пишите и что, я на пример пишу в VS, и сделал бы это так.
1. Создал соединение с одним сервером и со вторым, т.е. два отдельных обьекта sqlConnection.
2.На основе этих соединений создал бы два ДатаАдаптера.
3.Создал ДатаСет.
Ну и 4. при обращении к серверам вызывал бы соответствующий ДатаАдаптер для выполнения моих sql-команд.
Типа заполнил таблицу ДатаСета данными с одного сервера, что то с ними сделал и заслал их на другой сервер.

На самом деле пишу хранимую процедуру на MySQL-е и хочу пользоваться средствами только MySQL.

Приятно людей порадовать, конечно.   smile 
Но даже при таком простом запросе один сервер не видит другого. А какие команды использовать для установки соединения с другим сервером и получения оттуда данных - мне неизвестно. Это и спрашиваю  smile 


PM MAIL   Вверх
thomas
Дата 1.11.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: нет
Всего: 65



JustNick, 
Цитата

Но даже при таком простом запросе один сервер не видит другого. 

А как он по вашему должен его видеть?
Что бы видеть другой сервер, нужно знать его адрес и имя. Чтобы обратиться к бд на сервере нужно с ним установить соединение.
Средства SQL таких возможностей не предоставляют.
Хранимые же процедуры опрерируют средствами sql.
Можно ли в "мускулу" писать функции? Если да, то пиши функцию соединения с другим сервером и обращайся к ней из своей хранимой процедуры.
Но опять же стоит вопрос, а могут ли подобные действия выполнять функции? В VS для этих целей существуют целые пространства имен и системных классов.
Кстати я сомневаюсь что и из MS SQL можно такое провернуть.
А вот из приложения работающего с бд сервера можно.





--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Servena
Дата 1.11.2007, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Есть. В MS SQL это возможно.
Вот запрос:
Код

SELECT COUNT(*)
FROM ews1.Northwind.dbo.Orders


Здесь используется полное имя к таблице. Но чтобы этот запрос выполнился, нужно с помошью системной 
хранимой процедуры sp_addlinkedserver  добавить всю необходимую информацию о
удаленном сервере.
PM MAIL   Вверх
JustNick
Дата 2.11.2007, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Умные люди подсказали, что можно приконнектить табличку из другого сервера средствами MySQL с помощью создания таблицы с Engine = Federated.

Кому интересно, можно почитать: http://dev.mysql.com/doc/refman/5.1/en/fed...connection.html

Всем спасибо большое  smile  smile 

Это сообщение отредактировал(а) JustNick - 2.11.2007, 00:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.