sql server 导入带密码的access数据
如何实现将Access的数据的导入到SQL Server呢,相信网络上有很多教程来帮助大家了。但是,大家发现如果access文档使用了密码加密的话,就会发现网上所介绍的方法失灵了。下面将举例来说明。
以下有数据库abc.mdb,表结构如下:student(id int,name char(10)),密码为test。先要将其导入到sql server当中,假如abc.mdb没有加密,则可以采用下面几种方法:
sql server 导入、更新access的数据(无密码版)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
1.OpenRowSet方式
SELECT * FROM OpenRowSet('Microsoft.Jet.OLEDB.4.0',';database=C:abc.mdb','select * from student where id=1')
update OpenRowSet('microsoft.jet.oledb.4.0',';database=C:abc.mdb','select * from student where id=1') set name='张三'
2.OpenDataSource方式
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=C:abc.mdb')...student
update OpenDataSource('microsoft.jet.oledb.4.0','Data Source=C:abc.mdb')...student set name='张三' WHERE id=1
3.链接服务器方式
EXEC sp_addlinkedserver
@server = N'serTest',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@srvproduct = N'OLE DB Provider for Jet',
@datasrc = N'C:abc.mdb';
EXEC sp_addlinkedsrvlogin 'serTest'
EXEC sp_helpserver
--EXEC sp_dropserver N'serTest'
go
UPDATE serTest...student SET name='张三' WHERE id=1
SELECT * FROM serTest...student WHERE id=1
|
很多时候我们的mdb数据库是加密的,那么如果我们仍采用上面的方法,会发现sql执行出错,该怎么办呢?
我们首先查看下msdn中相关函数的定义:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
OPENROWSET
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'
|