2012-02-22 2 views
1

Мне нужно импортировать данные из базы данных MS Access в базу данных SQl Server 2000 один раз в день. Поскольку мне нужно, чтобы каждый день был автоматизирован, есть ли процедура C#, которая могла бы это сделать?C# импортировать базу данных MS-Access в SQL Server?

Таблицы в базе данных MS Access будут называться как те же таблицы на SQL Server и должны удалить таблицы в базе данных SQL Server, а затем импортировать новые данные/таблицы из MS Access.

+2

Звучит как работа для [Службы интеграции SQL Server] (http://msdn.microsoft.com/en-us/library/ms141026.aspx) –

+0

Нет автоматического процесса, который я знаю (в C#). будут ли эти таблицы большими? Это может повлиять на выбор решения. – dice

+0

да некоторые из них будут – Beginner

ответ

0

Три шага:

1 - Создать LinkedServer в SQLServer, как это:
EXEC master.dbo.sp_addlinkedserver @server = 'Customers', @srvproduct = 'CustomersDB', @provider = 'Microsoft.Jet.OLEDB.4.0', @datasrc = 'C:\inetpub\wwwroot\ftp\AccessDB.MDB', @location = '', @provstr = '', @catalog = ''
EXEC master.dbo.sp_serveroption @server = 'Customers', @optname = 'collation compatible', @optvalue = 'false'

2 - Создание хранимой процедуры внутри вашей целевой SQLServer делает работу Импорт
CREATE PROCEDURE ImportMDBData
as
TRUNCATE TABLE sqlServerCustTable
INSERT INTO sqlServerCustTable (list your columns name here) (SELECT * FROM Customers.dbo.mdbCustTable)

3 - Теперь вам просто нужно вызвать хранимую процедуру из кода

+0

Извините, я никогда не создавал хранимую процедуру, а в приведенном выше, что мне нужно сменить? мои две базы данных в настоящее время называются accessDB и sqlDB .. accessDB находится в C: \ inetpub \ wwwroot \ ftp – Beginner

+0

Также мне нужна хранимая процедура для таблицы? У меня есть 11 таблиц – Beginner

+0

ну, вы должны заменить (укажите название столбца здесь) именами столбцов вашей таблицы sqlserver.Нет, вам не нужна хранимая процедура для каждой таблицы, просто повторите инструкции TRUNCATE и SELECT INTO, изменив имя соответствующей таблицы в одну и ту же хранимую процедуру – Steve

1

Один из вариантов заключается в создании хранимой процедуры в базе данных сервера SQL, чтобы сделать это, смотрите здесь: select from access database file and insert to sql Database

Как было упомянуто marc_s вы можете быть в состоянии использовать SSIS - но может быть совсем немного обучения, участвующих в получении этого права.

Другим вариантом является контроль над ним изнутри C# - извлечение данных из базы данных доступа, а затем вставка их в сервер sql - это вряд ли будет тем, что вы хотите.

Если доступ к базе данных и экземпляр SQL Server гарантированно находиться на том же сервере, то я был бы склонен попробовать вариант 1. Если нет, то он открывает множество дополнительных вопросов;)

EDIT: вы упомянули, что это можно сделать, нажав кнопку - в этом случае вам действительно нужно предоставить решение SSIS как минимум по крайней мере и посмотреть, похоже ли оно на то, что вы хотите, оно предназначено именно для этого типа сценария.

0

access.mdb связанных серверов в SQL-сервере все версии, он должен быть необходим Microsoft.ACE.OLEDB.12.0 или Microsoft.Jet .OLEDB.4.0. эти драйверы существуют два типа: 32-битные и 64-разрядные. 64-битные ОС предпочитают устанавливать 64-битные реактивные драйверы, другие мудрые ссылки не могут работать.

Смежные вопросы