Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Вниз

Перекачка данных из MS SQL Server в MS Access с пом. SQL-запроса   Найти похожие ветки 

 
Nikolai_S   (2002-08-28 12:25) [0]

Если имеем две базы данных MS Access (AccessDb1.mdb и AccessDb2.mdb), то чтобы перекинуть данный из базы 2 в 1 можно SQL запрос построить так:

INSERT INTO [Таблица в AccessDb1.mdb] IN "AccessDb1.mdb" SELECT * FROM AccessDb2.mdb

и выполнить этот запрос нужно из AccessDb2.mdb.

Можно ли так же из SQL Server данные перекачать в базу данных MS Access?


 
Delirium   (2002-08-28 12:51) [1]

Linked Server


 
Nikolai_S   (2002-08-28 12:56) [2]

Можно по подробнее?


 
Delirium   (2002-08-28 13:01) [3]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sp_adda_8gqa.asp


 
Nikolai_S   (2002-08-30 18:22) [4]

Спасибо за ссылку. Я разобрался. Однако проблема отсалась не решенной. Дело в том, что в моей задаче имеется один SQL Server и много клиентов, которые к нему подсоединяются.

Поэтому как конкретный клиент, имеющий на SQL-Server"е права только на свою БД, может создать Linked Server? И потом примет ли функция sp_addlinkedserver в качетсве имени Access"кого файла сетевой путь, если не подключен сетевой диск?

Поэтому новый вопрос: можно ли подобным образом из MS Access подключиться к SQL Server"у, чтобы с пом. SQL-запросов считывать и вставлять из него данные?


 
Delirium   (2002-08-31 11:54) [5]

" можно ли подобным образом из MS Access подключиться к SQL Server"у" - разумеется, у ACCESS существует похожая технология - связка с ODBC-источником. Фактически, для каждой таблицы создаётся, как бы удалённое представление, с которым можно работать как с обычной таблицей.


 
Nikolai_S   (2002-09-02 12:16) [6]

У меня к сожалению нет справки по SQL для MS Access. Не подскажешь функцию или команду с помощью которой можно это осуществить или еще лучше ссылку на описание с примерами. Кстати, ODBC я не использую. Я пользуюсь UDL - Universal data link.

Заранее, благодарен


 
Delirium   (2002-09-02 12:33) [7]

Никаких команд для этого не надо, это делается "руками". Создаёшь ODBC соединение с MSSQL (Control Panel /Панель управления/ -> ODBC Data Sources /Источники данных ODBC/). В ACCESS делаешь следущее (ACCESS2000 - рус.): Файл -> Внешние данные -> Связь с таблицами -> ODBC Databases -> Источник данных компьютера. А на счёт ole db, тут к сожалению ACCESS пока не функционален, однако как показывает практика, с MSSQL можно вполне корректно работать и средствами ODBC.


 
Nikolai_S   (2002-09-02 12:48) [8]

Руками-то я это знаю как сделать. Мне нужно программно перекидывать выборку данных из MS SQL Server в базу данных MS Access. Пусть даже через ODBC. Может можно как-нибудь на SQL это сделать? Например, что-то вроде:
INSERT INTO [ACCESS_TABLE] FROM
SELECT * FROM [SQL_TABLE] IN <ODBCLink.SQLServerName.SQLServerDatabase.TableName>

Мне бы найти справку по SQL для Microsoft Jet. Тогда я бы там порылся и что-нибудь нашел...


 
Delirium   (2002-09-02 12:58) [9]

Ну так это так и делается:

select * into New_Table from odbc_link_Table

А по Jet SQL читай MSDN - http://msdn.microsoft.com/library/en-us/dnacc2k/html/acadvsql.asp


 
Delirium   (2002-09-02 13:00) [10]

А ещё разберись с примерами:
http://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/026/002/580/msdncompositedoc.xml


 
Nikolai_S   (2002-09-02 16:19) [11]

Я просмотрел документацию из MSDN вместе с примерами. Там к сожалению не заостряется вопрос обмена данными между СУБД. Есть лишь ссылка на справку по MS Access. А у меня она, к сожалению, не установлена полностью. Нужных разделов нету. Где можно найти синтаксис SQL запроса? В MSDN указан только такой:
INSERT INTO [DestinationTable] IN "AccessFileName.mdb" SELECT * FROM [SourceTable]

Я попробовал сделать так:
select * into New_Table from ODBCLink.Table
Однако Access ищет файл "ODBCLink.Table" в папке "Мои документы"


 
Nikolai_S   (2002-09-02 16:24) [12]

Либо можно пойти все же путем от SQL Server"а. У него есть процедура OPENROWSET, которая позволяет доставать данные к в случае с Linked Server, но не требует присоединять сервер. Эта процедура для разового доступа к таблице в другой базе данных. Он полностью мне подходит, кроме того, что требует пользователя с правами sa. Можно ли дать права другому пользователю на возможность выполнения такой процедуры?


 
Delirium   (2002-09-02 16:45) [13]

OPENROWSET - это не процедура, а функция.
Для иcполнения нижеследующего запроса никаких особенных прав на MSSQL не требуется, "admin";"mypwd" - это логин и пароль для ACCESS.

SELECT a.*
FROM OPENROWSET("Microsoft.Jet.OLEDB.4.0",
"c:\MSOffice\Access\Samples\northwind.mdb";"admin";"mypwd", Orders)
AS a


 
Nikolai_S   (2002-09-02 17:10) [14]

Я это пробовал под sa - работает. Под другим пользователем выдает ошибку:
"Ad hoc access to OLE DB provider "Microsoft.Jet.OLEDB.4.0" has been denied. You must access this provider through a linked server."



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
1-73629
Jony
2002-09-11 18:49
2002.09.23
Маразмы сравнения


3-73524
grig
2002-09-02 15:24
2002.09.23
что за разшерение такое *.dbt ?


1-73622
carmen
2002-09-11 23:19
2002.09.23
Как имея DFM файл построить по нему форму программно


14-73853
michael_b
2002-08-27 21:43
2002.09.23
Посоветуйте программу для взлома файлов защищенных средствами MS


4-73926
stainer
2002-08-04 01:50
2002.09.23
не работает сообщение диалогового окна





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский