日期:2014-05-16 浏览次数:21150 次
sql server 导入带密码的access数据
如何实现将Access的数据的导入到SQL Server呢,相信网络上有很多教程来帮助大家了。但是,大家发现如果access文档使用了密码加密的话,就会发现网上所介绍的方法失灵了。下面将举例来说明。
以下有数据库abc.mdb,表结构如下:student(id int,name char(10)),密码为test。先要将其导入到sql server当中,假如abc.mdb没有加密,则可以采用下面几种方法:
sql server 导入、更新access的数据(无密码版)
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中相关函数的定义:
OPENROWSET ( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password' | 'provider_string' } , { [ catalog. ] [ schema. ] object | 'query' } | BULK 'data_file' , { FORMATFILE = 'format_file_path' [ <bulk_options> ] | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB } } ) <bulk_options> ::= [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] [ , ERRORFILE = 'file_name' ] [ , FIRSTROW = first_row ] [ , LASTROW = last_row ] [ , MAXERRORS = maximum_errors ] [ , ROWS_PER_BATCH = rows_per_batch ] 参数 'provider_name' 字符串,表示在注册表中指定的 OLE DB 访问接口的友好名称(或 PROGID)。provider_name 没有默认值。 'datasource' 与某个特定 OLE DB 数据源相对应的字符串常量。datasource 是将传递给访问接口的 IDBProperties 接口以初始化访问接口的 DBPROP_INIT_DATASOURCE 属性。通常,该字符串包含数据库文件的名称、数据库服务器的名称,或者访问接口能理解的用于定位数据库的名称。 'user_id' 字符串常量,它是传递给指定 OLE DB 访问接口的用户名。user_id 为连接指定安全上下文,并作为 DBPROP_AUTH_USERID 属性传入以初始化访问接口。user_id 不能是 Microsoft Windows 登录名称。 'password' 字符串常量,它是传递给 OLE DB 访问接口的用户密码。在初始化访问接口时,password 作为 DBPROP_AUTH_PASSWORD 属性传入。password 不能是 Microsoft Windows 密码。 'provider_string' 访问接口特定的连接字符串,作为 DBPROP_INIT_PROVIDERSTRING 属性传入以初始化 OLE DB 访问接口。通常 provider_string 封装初始化访问接口所需的所有连接信息。有关 SQL 本机客户端 OLE DB 访问接口可识别的关键字列表,请参阅Initialization and Authorization Properties。
OPENDATASOURCE ( provider_name, init_string ) provider_name 注册为用于访问数据源的 OLE DB 访问接口的 PROGID 的名称。provider_name 的数据类型为 char,无默认值。 init_string 连接字符串,该字符串将要传递给目标提供程序的 IDataInitialize 接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:“keyword1=value; keyword2=value”。 若要了解提