Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.009 c
14-28987
vopros
2003-01-23 10:25
2003.02.10
Кто видел , чтоб DBImage хранил jpg?


1-28777
Adolf
2003-02-01 16:36
2003.02.10
TImage


1-28734
anod
2003-01-31 15:19
2003.02.10
Цвет текста в меню


14-29026
Navigor
2003-01-23 16:02
2003.02.10
Как String to Integer Сделать


9-28575
Nafander
2002-08-26 08:40
2003.02.10
Долбаный файл 3DS





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский