Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
ВнизMS SQL 2000 + MSSQL 2000 Найти похожие ветки
← →
AndrewVolkov (2003-01-23 18:14) [0]Добрый день еще раз.
Имеется две базы на разных серверах MS SQL 2000
Задача - с одной базы сделать выборку данных и добавить в другую базу. Использую ADO. Как это правильней сделать???
Спасибо.
← →
AndrewVolkov (2003-01-23 18:33) [1]что использовать как промежуточный буфер?
или первым этапом выбирать во flat файл а потом уже экспортировать во 2 базу
или можно напрямую гнать как-то?
← →
Chubais (2003-01-23 18:33) [2]insert into XXX
select ...
← →
Chubais (2003-01-23 18:35) [3]опс...
"на разных серверах" не заметил))
← →
sniknik (2003-01-23 18:50) [4]да ладно, какая разница - разные -
запросами естественно
пример из Books Online
SELECT *
FROM OPENDATASOURCE(
"SQLOLEDB",
"Data Source=ServerName;User ID=MyUID;Password=MyPass"
).Northwind.dbo.Categories
для чего здесь ServerName присутствует? правильно! другой сервер указать, если можно запрос к внешней базе то положить данные в ту откуда запрс сделан, разве проблема?
кроме того можно Linked Server создать, запросы попроще будут, ну или через DTS перегонять.
в общем открывай Books Online и читай разделы по ключевым словам (выделены), обрати внимание это еще не все там по ссылкам внизу, много полезного будет.
← →
S (2003-01-23 19:16) [5]Проше всего "замапить" сервер и писать запрос select * from Serbv2.Db.Имя базы. B все. За коннект будет отвечать сам сервер. Это на мой взгляд лучшее.
← →
AndrewVolkov (2003-01-23 20:00) [6]>to S я не совсем понял про замапить? это как?
← →
AndrewVolkov (2003-01-23 20:05) [7]> to sniknik DTS это имется в виду встроенная фигня в MS Sql 2000?
и что значит запросы будут проще если будут linked Server?
и если можно, короткий пример sql
взять из одной базы и засунуть в другую? Я не совсем понял как написать AdoQuery1 правильно
← →
sniknik (2003-01-23 22:37) [8]переделаем ранний пример
SELECT * INTO MyCategories
FROM OPENDATASOURCE(
"SQLOLEDB",
"Data Source=OutServer;User ID=sa;Password="
).Northwind.dbo.Categories
вот и положили в свою табличку из внешнего сервера, сервер OutServer пользователь sa пароля нет. Ужас как сложно. :о))
а теперь попроще то же самое
SELECT * INTO MyCategories
FROM MyLinkServer.Northwind.dbo.Categories
или
SELECT * INTO MyCategories
FROM MyLinkServer...Categories тоже правомочно (все параметры определены в линкед сервере)
(запись упрощается не находиш?)
DTS ну в общем та но не фигня точно, довольно мощная штука.
вместо AdoQuery1 советую для таких вещей ADOCommand использовать и настоятельно рекомендую почитать Books Online.
(про "замапить" не обращай внимания он явно спутал базы, в MSSQL нельзя обращатся по пути, да и не требуется)
← →
AndrewVolkov (2003-01-23 23:00) [9]> sniknik
Sorry, сегодня посмотрел на АДО первый раз вместе с скл, пока не все понял.
Но я еще раз спрошу
1. Books Online она в комплекте с инсталяцией СКЛ идет?
2. Я все таки недопонимаю с выбором из одной базы на одном сервере и вставкой в другую базу на другом сервере.
у меня должно быть 2 ADOConnection1? или одной хватает?
А дальше насколько я понимаю в ADOCommand1 пишется данный СКЛ
SELECT * INTO MyCategories
FROM MyLinkServer.Northwind.dbo.Categories
Тогда вопрос - у него есть св-во connection i connection string
получается я должен указать коннекцию на результирующую базу? (ведь ничего я не могу не указать), а поймет ли он тогда запись типа FROM MyLinkServer.Northwind.dbo.Categories (и зачем dbo писать?)
Если не сложно, ответьте. Я перекопал кучу факов но так ничего дельного и не нашел на мой вопрос.
← →
AndrewVolkov (2003-01-23 23:03) [10]P.S.
mylinkServer он понимает имя когда я его прописываю в Interprice Manager как Linked Server?
← →
sniknik (2003-01-24 00:47) [11]> 1. Books Online она в комплекте с инсталяцией СКЛ идет?
да с MSSQL
>у меня должно быть 2 ADOConnection1? или одной хватает?
А дальше насколько я понимаю в ADOCommand1 пишется данный СКЛ
одной хватит за гзаза,
команды пишеш в ADOCommand1 его прописываеш в
ADOConnection1 его подключаеш к SQL серверу все остальное (запросы, коннекты к другому серверу он делает сам, по командам от тебя)
SELECT * INTO MyCategories
FROM OPENDATASOURCE(
"SQLOLEDB",
"Data Source=OutServer;User ID=sa;Password="
).Northwind.dbo.Categories
вот это запрос, команда на создание и заполнение таблици MyCategories в том сервере к какому подключен из внешнего источника OPENDATASOURCE...., по отнощению к нему (подк.серверу). На самом деле подключатся можеш черт знает куда а внешним будет тот сервер с которого ты команды шлеш. Вот парадокс, да?
Linked Server по моему проше его запросом сделать но можно и в Enterprise, кому как. (почитай BOL. там примеры!)
dbo это владелец, можно не писать все одно по умолчанию поставит
(пример 2 SELECT * INTO MyCategories
FROM MyLinkServer...Categories тут его нет но он все одно есть)
не знаю кто придумал, считается удобством. так не думаеш?
← →
AndrewVolkov (2003-01-24 10:30) [12]>sniknik
Чего то не выходит, не пойму почему.
Пишу запрос прямо в Ентерпрайз менеджере.
С выбрать и вставить не идет, пробую хотя бы выбрать
Пишу Select * from OpendataSource("sqloledb", "Data Source=2000Server;User id=sa;Password=").probabase.dbo.adress
Выдается сообщение (ок, хелп)
The SQL syntax has been verified against the datasource
Жмем ок
После этого в конце запроса добавляется Rowset_1
и ничего не выбирается ;-(
В чем ошибка
← →
sniknik (2003-01-24 11:27) [13]запросы пробуй в Query Analyzer.
запрос правильный, и сообщение проверка ok, вроде. это при "run" так говорит?
запусти так (максимальное упрощение), обязательно в Query Analyzer (проше отследить, заходить туда с теми же параметрами не сможеш дело в разрешениях).
SELECT * FROM
OPENDATASOURCE ("SQLOLEDB", "Data Source=;User ID=sa;Password=").master.dbo.sysfiles
Data Source=; //не задано, возьмет текуший сервер (должен быть установлен на этой же машине)
User ID=sa;
Password= //стандартный юзер ставится при установке не должен быть запаролен, должна разрешатся идентификация по юзеру, т.е. проверь
у локального сервера (в энтерпрайс менеджере), свойства->Security->Authentication галочка должна стоять на SQL и виндовс (ни в коем случае не виндовс онли, по юзеру не зайдеш многое меняется)
master.dbo.sysfiles //есть в любом mssql сервере, раз по sa заходиш то права на открытие есть
должно работать "как есть"
← →
AndrewVolkov (2003-01-24 14:55) [14]Спасибо. с этим вроде разобрался, только теперь вопрос в другом.
При такой записи
SELECT * INTO MyCategories
FROM OPENDATASOURCE(
"SQLOLEDB",
"Data Source=OutServer;User ID=sa;Password="
).Northwind.dbo.Categories
Он это сделает один раз при условии если не существует в локальной базе такой таблицы, а если уже есть он ругается
типа
There is already an object named "categories" in the database.
Получается я не могу ничего добавить ;-(
← →
sniknik (2003-01-24 15:02) [15]вместо select insert
еще раз, болеее настойчиво :-), почитай BOL.
← →
AndrewVolkov (2003-01-24 19:24) [16]Спасибо
Если не сложно как правильно написать с insert
Чтобы в синтаксис врубиться
Дальше по BOL я думаю разберусь.
P.S. и с aDOCommand насколько я понял я им только могу реально посылать команды на выполнение, а реально если я хочу получить какую то выборку (в смысле просмотреть) он для этого не предназначен
← →
AndrewVolkov (2003-01-24 20:24) [17]Почитал я БОЛ но особо не понимаю каак я могу использовать
insert если я не могу скахзать ему from
← →
AndrewVolkov (2003-01-24 20:51) [18]Прочитал еще раз, повнимательней, усе понял.
Большое спасибо то SNIKNIK
Очень очень помогли
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c