MSSQL导入ACCESS数据的问题,在MSSQL查询里可以执行,在客户端执行不了
请仔细看下面这段代码,我放在MSSQL的查询器里运行正常,但是放到程序里用ADOQuery里一段一段的执行就打不开MDB,提示:MicrosoftJet数据库引擎打不开文...
请仔细看下面这段代码,我放在MSSQL的查询器里运行正常,但是放到程序里用ADOQuery里一段一段的执行就打不开MDB,提示:Microsoft Jet 数据库引擎打不开文件'\\192.168.1.89\Share\Test.mdb'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。
具体说明:我是将这段代码存入StringList,然后让AdoQuery遇到go就执行,这样一段一段执行的,前面执行没问题,到了打开mdb数据的时候就报错了,但在sql服务器上执行就没问题。可以确定服务器和客户端都已经对Share文件夹有完全的读写权限,直接用Access 2003去打开都没问题。
我做过的尝试:我在服务器端将Share映射为SQL服务器的Z: 盘,在服务器的查询里执行正常取得数据,然后在客户端执行开启Z:\Test.mdb,结果却提示找不到z:\Test.mdb文件。
目的:我需要在程序里执行这段代码在必要的时候才去导入数据。
请各位大大帮忙,我已经找了很久的资料了,仍然无法解决。
SQL Code:
exec sp_configure 'show advanced options',1
reconfigure
go
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
go
select * from openrowset('Microsoft.Jet.OLEDB.4.0','\\192.168.1.89\share\Test.mdb';'admin'; '',TestDB)
go
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
go
exec sp_configure 'show advanced options',0
reconfigure
go
在客户端用ACCESS可以打开Test.mdb ,Share文件夹具有完全读写权限,在SQL服务器里执行客户端仍然不能访问。 展开
具体说明:我是将这段代码存入StringList,然后让AdoQuery遇到go就执行,这样一段一段执行的,前面执行没问题,到了打开mdb数据的时候就报错了,但在sql服务器上执行就没问题。可以确定服务器和客户端都已经对Share文件夹有完全的读写权限,直接用Access 2003去打开都没问题。
我做过的尝试:我在服务器端将Share映射为SQL服务器的Z: 盘,在服务器的查询里执行正常取得数据,然后在客户端执行开启Z:\Test.mdb,结果却提示找不到z:\Test.mdb文件。
目的:我需要在程序里执行这段代码在必要的时候才去导入数据。
请各位大大帮忙,我已经找了很久的资料了,仍然无法解决。
SQL Code:
exec sp_configure 'show advanced options',1
reconfigure
go
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
go
select * from openrowset('Microsoft.Jet.OLEDB.4.0','\\192.168.1.89\share\Test.mdb';'admin'; '',TestDB)
go
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
go
exec sp_configure 'show advanced options',0
reconfigure
go
在客户端用ACCESS可以打开Test.mdb ,Share文件夹具有完全读写权限,在SQL服务器里执行客户端仍然不能访问。 展开
5个回答
展开全部
一步步了解下,你的开发语言是什么?
<%
connstr = "provider=sqloledb;Data Source=PC111VM\SQLEXPRESS;Initial Catalog=Mytest;User Id=sa;Password=123456"
Set conn=server.CreateObject("adodb.connection")
conn.open connstr
conn.execute("exec sp_configure 'show advanced options',1")
conn.execute("reconfigure")
conn.execute("exec sp_configure 'Ad Hoc Distributed Queries',1")
conn.execute("reconfigure")
Set rs=conn.execute("select * from openrowset('Microsoft.Jet.OLEDB.4.0','D:\WWWROOT\demo\lixue\mmsdb.mdb';'admin'; '',staff)")
response.Write rs.fields(0).value
rs.close: conn.close
%>
执行这个,可以有正确的结果。可能跟你从别的地方共享过来有关。
<%
connstr = "provider=sqloledb;Data Source=PC111VM\SQLEXPRESS;Initial Catalog=Mytest;User Id=sa;Password=123456"
Set conn=server.CreateObject("adodb.connection")
conn.open connstr
conn.execute("exec sp_configure 'show advanced options',1")
conn.execute("reconfigure")
conn.execute("exec sp_configure 'Ad Hoc Distributed Queries',1")
conn.execute("reconfigure")
Set rs=conn.execute("select * from openrowset('Microsoft.Jet.OLEDB.4.0','D:\WWWROOT\demo\lixue\mmsdb.mdb';'admin'; '',staff)")
response.Write rs.fields(0).value
rs.close: conn.close
%>
执行这个,可以有正确的结果。可能跟你从别的地方共享过来有关。
追问
这百度的评论回复好像有问题,一下子说有不适合发布的内容,一下子说我发的内容重复了,没办法放这里吧。
没有启用pipe协议,应该跟这没关系吧,连接SQL服务器正常啊
追答
启动一下,我想跟它可能有关系。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我认为你可以这样试试,1、先将ACCESS导入到SQL SERVER2000中,2、然后在SQL SERVER2000中又将这个库导出,3、在MYSQL中通过数据导入工具找到2中导出的库,再导进MYSQL中,这样就数据编码就应该不会有什么问题了!我的经验!可以试试!今后一起共勉!有空到CSDN,365testing,测评网看看NFZ。365testing.com。NFZ
追问
你回答的不是我的问题吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-01-02
展开全部
我不太懂你的 代码,但是我觉得 你前面执行的那些 有及时关闭吗?如果你没有关闭的话,系统就会认为在你要打开的时候其实已经被占用了!
你是否先打开为好哪……
你是否先打开为好哪……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询