Форум: "Базы";
Текущий архив: 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.008 c