openrowset 的网络访问

来源:互联网 发布:牛牛网络 编辑:程序博客网 时间:2024/05/21 10:05
 

----------------------------------------

--Bcp,openrowset 的网络访问

--Flystone--2008-06

-----------------------------------------

一般情况在本地的excel文件,相信大家都会了吧

格式如下:

--1

SELECT *FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\aa.xls','select * from [sheet1$]')

--2

SELECT   * FROM   OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',               'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]

--3 将会保存到服务器的C:\temp.xls

exec  master..xp_cmdshell 'bcp 200800303.dbo.fdaenterprise out C:\temp.xls  -c  -q  -T    -s "192.168.0.126"  -u"sa"  -p"sa"'

对于这些操作相信大家都会了,不存在问题,可是如何进行网络操作呢?

比如bcp到网络其它机器一般会有如下写法:

exec  master..xp_cmdshell 'bcp 200800303.dbo.fdaenterprise out \\192.168.0.136\E:\tst\temp.xls  -c  -q  -T        -s "192.168.0.126"  -u"sa"  -p"sa"' 

或有人映射网络驱动器Z: -->\\192.168.0.136\tst

exec  master..xp_cmdshell 'bcp 200800303.dbo.fdaenterprise out Z:\temp.xls  -c  -q  -T        -s "192.168.0.126"  -u"sa"  -p"sa"' 

192.168.0.136上的E:\tst是设置的共享文件夹  

执行上面的SQL,有下面的错误:  

SQLState = S1000, NativeError = 0 Error = [Microsoft][ODBC SQL Server Driver]

无法打开 BCP 主数据文件

如果访问网络上的excel文件,不管是共享地址(\\192.168.0.136\tst\temp.xls)还是映射他人的本机物理地址如(Z:\temp.xls)会如下提示:

消息 7399,级别 16,状态 1,第 1 行链接服务器 "(null)" 的 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。

消息 7303,级别 16,状态 1,第 1 行无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0" 的数据源对象。

那么,怎么来解决这个问题呢?

首先,我们可以在查询分析器运行如下代码 :

exec master..xp_cmdshell 'dir \\192.168.0.136\c$'

此时如果能正常显示出网络机器的目录 说明 会话建立,如果提示拒绝访问就是会话没有建立运行如下代码

进行网络连接:

exec master..xp_cmdshell'net use \\192.168.0.136\c$ zxcvbnm /user:192.168.0.136\administrator'

注释: 其中:PASSWORD, 是 USERNAME在 192.168.0.136上的用户,当为空时,用''''      USERNAME 能访问这个目录 的用用户,

比如administrator比如你192.168.0.136 机器上administrator,密码为:1234

exec master..xp_cmdshell'net use \\192.168.0.136\tst 1234 /user:192.168.0.136\administrator'

接着你运行如下:

SELECT *FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=\\192.168.0.50\c$\aa.xls','select * from [sheet1$]')

哇,是不是数据全出来了呀,当然你的bcp操作也会成功的了

大家有兴趣可以看看我那篇blog

http://blog.csdn.net/happyflystone/archive/2008/01/18/2051325.aspx

一个关于网络备份的例子

0 0