在MSSQL中对ACCESS文件操作方式汇总
CSDN朋友问题回复:
有个ACCESS数据库文件在本机,机器上的OFFICE套件已经卸载,ACCESS没有用户名和密码,如何用MSSQLServer来查询和修改其文件内容?
比如ACCESS物理文件是存放在D盘根目录下的home.mdb,其中包含表'帐户'
一ACCESS数据源查询
方式一:链接服务器
--1 新建链接服务器
EXEC sp_addlinkedserver 'clA', --名称自己起
'ACCESS', --数据源产品为access
'Microsoft.Jet.OLEDB.4.0', --数据源OLEDB
'D:/home.mdb' --access数据文件物理路径
--命令已成功完成。
--2.1 利用OPENQUERY函数查询ACCESS数据库
SELECT top 3 *
FROM OPENQUERY(clA, 'SELECT * FROM 帐户')
--result:
AccountID AccountNumber AccountName AccountTypeID
----------- -------------------------------------------------- -------------------------------------------------- -------------
1 1001 房租费 1
2 1002 交通费 1
3 1003 电费 1
(3 行受影响)
--2.2 直接查询
select * from clA...帐户
--result:
--结果与.1查询结果一致。
方式二:使用OLE DB 连接并访问远程数据的一次性的临时方法
--更改数据库高级配置选项
/*
sp_configure 'show advanced options',1
reconfigure
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
*/
--查询ACCESS数据库,table为帐户.
SELECT top 3 *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'D:/home.mdb';'admin';'',帐户)
GO
--result:
--结果与.1查询结果一致。
方式三:使用OPENDATASOURCE 连接并访问远程数据的一次性的临时方法
select top 3 *
from OPENDATASOURCE ( 'Microsoft.Jet.OLEDB.4.0'
,'Data Source="D:/home.mdb";User ID=Admin;Password=;')...帐户
--result:
--结果与.1查询结果一致。
总结一:对于ACCESS本地数据源的读取,可以用以上三种方式的任意一种。当mdb存在用户名和密码时,
方式一需要添加远程链接登录名,比如执行如下脚本exec sp_addlinkedsrvlogin 'clA','false',NULL,'用户名','用户密码';
方式二和方式三则分别在'admin';''和User ID=Admin;Password=中输入相应的密码,这里默认用户是admin。
二ACCESS数据源修改
/*
对于数据源的i/u/d类型操作,建议使用远程链接服务器的方式进行(即.1的方式)。
*/
--举例如下:
update clA...帐户set AccountNumber=10010 where AccountNumber=1001 and AccountID = 1
--result:
(1 行受影响)
三发散知识点:
Q:为何对于非MSSQL数据源的i/u/d操作,通常都建议在远程链接服务器方式下进行呢?
A:远程链接服务器是指通过sp_addlinkedserver搭建数据源链接进行访问的一种方式,通常用于长期频繁的数据源的s/i/u/d操作,
相当于直接进行表操作。对于OPENROWSET和OPENDATASOURCE方式通常是进行一次性的应用操作,除了安全性等原因,它们无法进行
安全管理以及查询目录信息的功能。
Q:如果ACCESS不在本机,还可以用上述方式查询吗?
A:变化一下思路,将ACCESS在异地的文件转换为本机。比如home.mdb文件是在.168.1.1机器上,则我们可以使用
//192.168.1.1//共享文件夹/home.mdb形式,当然前提是设置了共享文件夹;另外还可以尝试打开默认共享,比如
//192.168.1.1/D$/home.mdb。当然任何想法和思路都要以适合应用为前提,简单便捷安全为前提。这里仅提供思路,
不表示该方式一定可以实现,因为涉及面不仅仅是数据库方面,还涉及到网络共享等。
在MSSQL中对ACCESS文件操作方式汇总的更多相关文章
- C#中实现excel文件批量导入access数据表中
一 .界面简单设计如下: 二 .代码如下: using System; using System.Collections.Generic; using System.ComponentModel; u ...
- [置顶] LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句
LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 declare @sql varchar(4000), @dirpath varch ...
- 第9.12节 Python中其他文件操作方式
一. 引言 本章老猿主要介绍了Python 内置io模块的文件操作相关功能,其实除了内置io模块可以进行文件操作外,Python的不同模块还提供了多种文件操作方式,下面简单将这些模块和方法介绍一下. ...
- Microsoft.ACE.OLEDB.12.0 及其在 MSSQL中的使用
1.Microsoft.ACE.OLEDB.12.0 简介 就是一个数据访问接口,用于在office文件和非office应用程序间传输数据.例如 Microsoft Office Access 201 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- mac下查看.mobileprovision文件及钥匙串中证书.cer文件
mac下查看.mobileprovision文件及钥匙串中证书.cer文件 一. mobileprovision文件查看 xxx.mobileprovision是ios开发中的设备描述文件,里面有证书 ...
- C++读取文件夹中所有的文件或者是特定后缀的文件
由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...
- 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据
开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...
- Linux中如何查看文件的最初创建时间
查看 一个文件的 最初创建时间: Linux中如何查看文件的最初创建时间 linux 目前Linux没有直接查看创建文件的命令,你只能通过文件是否被修改过来进行判断. //查看代码stat ...
随机推荐
- heap和stack有什么区别
1.heap是堆,stack是栈. 2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配. 3.stack空间有限,heap的空间是很大的自由 ...
- linux 下安装开发组件包
最初安装redhat 时, 系统自己装的,只安装了base 包,在开发过程中,需要不停的安装某个需求包, 图省事,安装光盘下的开发组件包: 在安装光盘下,,,用命令: yum grouplist ...
- 在表单(input)中id和name的区别
但是name在以下用途是不能替代的: 1. 表单(form)的控件名,提交的数据都用控件的name而不是id来控制.因为有许多name会同时对应多个控件,比如checkbox和radio,而id必须是 ...
- IOS: 使用imageIO获取和修改图片的exif信息
使用imageIO获取和修改图片的exif信息 一幅图片除了包含我们能看见的像素信息,背后还包含了拍摄时间,光圈大小,曝光等信息.UIImage类将这些细节信息都隐藏了起来,只提供我们关心的图片尺寸, ...
- Java之内存分析和String对象
原文地址:http://www.cnblogs.com/devinzhang/archive/2012/01/25/2329463.html 文中 s2后面的注释是错误的,应该是”创建一个对象(堆中) ...
- [Effective JavaScript 笔记]第58条:区分数组对象和类数组对象
示例 设想有两个不同类的API.第一个是位向量:有序的位集合 var bits=new BitVector(); bits.enable(4); bits.enable([1,3,8,17]); bi ...
- 新手选择使用 Linux 桌面的七个注意点
导读 刚接触Linux桌面的用户该如何选择一款合适的Linux桌面环境呢?如果你习惯使用Windows或OS X,那么一想到要选择就让人犯难,那么你又该如何在十几个主要的Linux桌面.几十个次要的当 ...
- Unity3D如何制作透贴和使用透贴模型
http://momowing.diandian.com/post/2012-10-25/40040842845 Unity3D如何制作透贴和使用透贴模型??解决办法!!! 问题: 同事通过3DMAX ...
- STL之list容器用法
List 容器 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容 ...
- sizeof()和strlen()的区别与联系
参考:http://www.cnblogs.com/carekee/articles/1630789.html 1.sizeof是运算符,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数 ...