mssql关于文件操作的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mssql关于文件操作的问题相关的知识,希望对你有一定的参考价值。

请问有什么命令可以对服务器上的文件进行操作 比如 新建文件 修改文件 删除文件 把文件内容读入表里 把表里的内容导出到一个文件 有什么命令啊 越多越好 是存储过程也可以 不过请写出用这个存储过程的权限 谢谢啦

参考技术A xp_cmdshell扩展存储过程执行外部程序,SA权限
bcp.exe用来导入导出。

补充:
都能执行外部程序了还有什么不能做到的呢?
参考技术B 郁闷 不知道怎么回那个号回自己的贴子 只好用另一个
太少了吧 还有没有别的方法?

在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 帐户‘)

Go

 

--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关于文件操作的问题的主要内容,如果未能解决你的问题,请参考以下文章

野路子出身PowerShell 文件操作实用功能 MSSQL123

对大字符串进行操作永远不会完成 MSSQL 2012

MSSQL SERVER收缩日志文件

MSSQL查询回显列之间用逗号分隔开怎么操作?

MSSQL系列 :数据库的相关操作(增删改查)

我还原MSSQL数据库时报错:用户没有 RESTORE 数据库‘XXX’的权限。RESTORE DATABASE 操作异常终止。请问