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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование из одной базы дынных в другую, Копирование из одной базы дынных в другу 
:(
    Опции темы
eon
  Дата 29.11.2010, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!
Есть БД, в которой хранятся некие данные, необходимые для работы моей программы.
Эти данные я должен хранить в собственной БД. SQLServer08
Вроде как решил я обновлять данные в своей БД раз в сутки.
Как правильно организовать копирование данных из таблицы одной БД в таблицу моей БД??
Можно прям каждые сутки брать из первой БД данные и помещать вместо существующих данных в мою БД.
Как правильно сделать это через winforms.
Например в datagridview я могу загрузить данные из первой БД, и как же их поместить в мою БД вместо предыдущих данных??
PM MAIL   Вверх
Akina
Дата 29.11.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



А вот зачем тебе гонять данные через свою станцию? заняться нечем?
Напиши хранимую процедуру, которая будет перегонять данные. Типа (syntax-fake, idea only)
Код

create procedure RefreshData
as
delete * 
from dbo.dbase1.datatable1;
insert into dbo.dbase1.datatable1
select *
from dbo.dbase2.datatable2;

и запускай когда нужно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
eon
Дата 29.11.2010, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну всё равно придется писать приложение на VS??
Или можно будет как-то задать, чтобы эта хранимка запускалась в субд каждый день в 3:00 например??

PM MAIL   Вверх
Akina
Дата 29.11.2010, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Конечно можно. Можно создать на сервере отдельный Job, а можно включить его в существующий пакет джобов или даже в maintainance plan (впрочем, я бы всё-таки сделал его автономным).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
eon
Дата 29.11.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



### smile
Я ничего к сожалению не понимаю в джобах))))
PM MAIL   Вверх
Zioma
Дата 29.11.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Конечно можете, хоть раз в сутки, хоть каждые 5 минут.
Почитайте что-то по репликации в MSSQL (для общего развития ;) ), ну и конечно по экспорту/импорту данных.
PM MAIL   Вверх
eon
Дата 29.11.2010, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Еще дело в том, что первичная БД - оракловая, а моя - скл сервер

пробую так:
Код

string connectionString1 = "DATA SOURCE=blabla;PERSIST SECURITY INFO=True;USER ID=user; PASSWORD=password";
            OracleConnection con1 = new OracleConnection(connectionString1);
            string connectionString2 = "Data Source=blabla;Initial Catalog=bla;User ID=user;Password=password";
            SqlConnection con2 = new SqlConnection(connectionString2);
            string commandString1 = "INSERT INTO subp.subp.dbo.DataFromSo SELECT * FROM SO_OAL.SO.AK_OAL_TIME_COUNT";
            SqlCommand cmd = new SqlCommand(commandString3);
            cmd.Connection = con2;
            con1.Open();
            con2.Open();
            cmd.ExecuteNonQuery();
            con1.Close();
            con2.Close();


Короче путанница небольшая. Ошибка: Недопустимое имя объекта "SO_OAL.SO.AK_OAL_TIME_COUNT".
Помогите разобраться.
PM MAIL   Вверх
Akina
Дата 29.11.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(eon @  29.11.2010,  15:38 Найти цитируемый пост)
Я ничего к сожалению не понимаю в джобах)))) 

В виндовом шедулере разобраться сможешь? и тут разберёшься.

Цитата(eon @  29.11.2010,  15:57 Найти цитируемый пост)
 первичная БД - оракловая, а моя - скл сервер

И что?

Цитата(eon @  29.11.2010,  15:57 Найти цитируемый пост)
Ошибка: Недопустимое имя объекта 

Ну ещё бы. Откуда MS SQL знает, что где-то там есть Оракл?

eon, Вы (я извиняюсь) не пробовали читать маны? примеры там посмотреть... помогает...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
eon
Дата 30.11.2010, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Akina @ 29.11.2010,  15:29)
eon, Вы (я извиняюсь) не пробовали читать маны? примеры там посмотреть... помогает...

Пока не пробовал, когда берешься что-то делать, охото же, чтобы всё и сразу smile
Сделаю через датагридвью.
PM MAIL   Вверх
eon
Дата 30.11.2010, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(eon @ 29.11.2010,  14:57)
Еще дело в том, что первичная БД - оракловая, а моя - скл сервер

пробую так:
Код

string connectionString1 = "DATA SOURCE=blabla;PERSIST SECURITY INFO=True;USER ID=user; PASSWORD=password";
            OracleConnection con1 = new OracleConnection(connectionString1);
            string connectionString2 = "Data Source=blabla;Initial Catalog=bla;User ID=user;Password=password";
            SqlConnection con2 = new SqlConnection(connectionString2);
            string commandString1 = "INSERT INTO subp.subp.dbo.DataFromSo SELECT * FROM SO_OAL.SO.AK_OAL_TIME_COUNT";
            SqlCommand cmd = new SqlCommand(commandString3);
            cmd.Connection = con2;
            con1.Open();
            con2.Open();
            cmd.ExecuteNonQuery();
            con1.Close();
            con2.Close();


Короче путанница небольшая. Ошибка: Недопустимое имя объекта "SO_OAL.SO.AK_OAL_TIME_COUNT".
Помогите разобраться.

Кто-нибудь подскажет, как правильно написать именно этим способом?
PM MAIL   Вверх
Akina
Дата 30.11.2010, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



http://msdn.microsoft.com/en-us/library/ms...v=SQL.100).aspx
http://msdn.microsoft.com/en-us/library/dd...v=SQL.100).aspx
http://msdn.microsoft.com/en-us/library/ms...v=SQL.100).aspx
Особенно внимательно читать про INSERT ... SELECT * FROM OPENROWSET(BULK...)

Цитата(eon @  30.11.2010,  07:12 Найти цитируемый пост)
когда берешься что-то делать, охото же, чтобы всё и сразу

Этим и отличается дилетант от профессионала. Отвыкай.

Добавлено через 48 секунд
Цитата(eon @  30.11.2010,  08:08 Найти цитируемый пост)
как правильно написать именно этим способом? 

Никак. По-моему, это уже можно было понять.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 30.11.2010, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Цитата(Akina @  30.11.2010,  08:52 Найти цитируемый пост)
Никак

MS ведь поддерживает гетерогенные связи!

Однако можно выполнить тоже самое, подключившись к ораклу. Настроив на его стороне HS, подключив к нему MS.
Правда что то мне подсказывает, что настроить окружение MS будет несколько попроще.

Это сообщение отредактировал(а) Zloxa - 30.11.2010, 10:21


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 30.11.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Zloxa @  30.11.2010,  11:20 Найти цитируемый пост)
MS ведь поддерживает гетерогенные связи!

Да. Постоянные. Я же даю ссылки на то же самое, только связь сеансовая.
Цитата(Zloxa @  30.11.2010,  11:20 Найти цитируемый пост)
можно выполнить тоже самое, подключившись к ораклу

Не суть. Убеждён, что у Оракла тоже найдётся синтаксис сеансового подключения. Тем более что есть постоянка.

Но ты посмотри, что ОН желает. Не инструктируя сервер БД, заставить его обмениваться данными с другим сервером БД, о котором известно только клиентской части. Это - нереально.

Добавлено через 1 минуту и 48 секунд
ТО есть реально, конечно, можно всосать в себя данные из одного сервера, в локальный рекордсет, а потом их вывалить в другой сервер. Но это как раз то, о чём я говорю - гнать данные через клиента, когда надобности в том вовсе никакой.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 30.11.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Цитата(Akina @  30.11.2010,  11:03 Найти цитируемый пост)
Убеждён, что у Оракла тоже найдётся синтаксис сеансового подключения

Вот это врядли. Ничего подобного не припомню smile



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 30.11.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Zloxa @  30.11.2010,  12:21 Найти цитируемый пост)
Вот это врядли. Ничего подобного не припомню 

Не силён... но так, по верхам пробежав, полагаю, что create database link в сеансе как раз позволяет сотворить нечто аналогичное - подключиться к удалённой БД, утянуть оттуда нужные данные и отключиться.
Не, запросто могу и ошибаться... но уж больно похоже.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

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

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

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

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

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


 




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


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

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