Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.23;
Скачать: CL | DM;

Вниз

Перекачка данных из 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
3-73499
Antipich
2002-08-31 19:04
2002.09.23
Таблицы *.XML


3-73516
denimas
2002-09-02 06:30
2002.09.23
Group by


14-73881
VictorT
2002-08-28 17:54
2002.09.23
опять про *.bat файлы


1-73719
tytus
2002-09-11 11:34
2002.09.23
Please help!!!


3-73526
denimas
2002-09-02 08:26
2002.09.23
Месяц