用的sql语句是
strSql.Append("insert into table_A select * from ");
strSql.Append(" OPENROWSET('Microsoft.Jet.OLEDB.4.0', '" + Path + "';'admin';'" + passWord + "', table_A)");
其中Path是access数据库的包含数据库名的完全的地址,password是该数据库的密码,执行后报错:
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。身份验证失败。
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。"。
其中access数据库并未打开,而且路径和密码也是完全正确的。查了很多方法都没有结果,我的sqlserver的数据库是在服务器上的,access数据库在本机。
40 个解决方案
#1
看过很多帖子都说是access数据库要和sqlserver数据库放一起的,我把access数据库放到服务器上,并在sqlserver2005上用尝试过查询分析,不过还是一样的错。
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。身份验证失败。
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。身份验证失败。
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
#2
用这种方法,MDB要在本机才行,SQLSERVER可以在服务器上
#3
我的mdb就是在本机的啊,而且sqlserver服务器上的外围配置都配好了的,OPENROWSET也没有问题啊
#4
我的mdb就是在本机的啊
是在运行程序的机器上?
是在运行程序的机器上?
#5
是的,程序和access数据库都在本机上,sqlserver数据库在服务器上
#6
MDB中的密码是什么?用户组 OR 数据库?
#7
mdb的密码就是一个简单的字符串啊
#8
mdb必须也在服务器上,和SQL SERVER在同一台机器上。
QQ群 48866293 / 12035577 / 7440532 / 13666209
ACCESS专业论坛
http://www.accessbbs.cn/bbs/index.php .
http://www.office-cn.net/vvb/ .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
.
http://www.office-cn.net/home/space.php?uid=141646 .
QQ群 48866293 / 12035577 / 7440532 / 13666209
ACCESS专业论坛
http://www.accessbbs.cn/bbs/index.php .
http://www.office-cn.net/vvb/ .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
.
http://www.office-cn.net/home/space.php?uid=141646 .
#9
我是问:是数据库密码还是用户组密码?
#10
no,是在本机
#11
数据库密码啊
#12
连接字串有问题
设置数据库密码,打开密码为 1 打开时需要使用
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\1.mdb;User ID=admin;Password=;Jet OLEDB:Database Password=1"
#13
你的这个只是简单的链接该access数据库啊
我这个OPENROWSET('Microsoft.Jet.OLEDB.4.0', '" + Path + "';'admin';'" + passWord + "', table_A),格式上没有任何问题啊
我这个OPENROWSET('Microsoft.Jet.OLEDB.4.0', '" + Path + "';'admin';'" + passWord + "', table_A),格式上没有任何问题啊
#14
给你讲过,连接字串有问题
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="d:\temp\yy.mdb";User ID=Admin;Password=;Jet OLEDB:Database Password=1234')...zzz
#15
用你上面的那个连接字符串还是出现了我问的这个问题
#16
你直接在查询分析器中运行,看看能否访问MDB,我是测试通过的,
注意MDB要在本机。
#17
我在查询分析器里执行也是出现这个错误
#18
代码贴出来看看
#19
你好,我能加你q或是msn和你聊吗
#20
私信发不出去的,不好意思哦
#21
就在这个帖子中吧
#22
public void SaveAllData(string filePath, string passWord)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into T_FO_COMMITEE select * from ");
strSql.Append("OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + filePath + ";User ID=Admin;Password=;Jet OLEDB:Database Password=" + passWord + "')...T_FO_COMMITEE");
dbhelper.ExecuteNonQuery(strSql.ToString());
}
这个是我的插入一个access数据库中的T_FO_COMMITEE表的数据到当前的sqlserver数据库中的表T_FO_COMMITEE的函数,两个数据库的表结构是一样的
我服务层调用dao层的这个函数,传下来的两个参数,一个是当前access数据库的路径,一个是access数据库的密码。这个函数就这样的。
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into T_FO_COMMITEE select * from ");
strSql.Append("OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + filePath + ";User ID=Admin;Password=;Jet OLEDB:Database Password=" + passWord + "')...T_FO_COMMITEE");
dbhelper.ExecuteNonQuery(strSql.ToString());
}
这个是我的插入一个access数据库中的T_FO_COMMITEE表的数据到当前的sqlserver数据库中的表T_FO_COMMITEE的函数,两个数据库的表结构是一样的
我服务层调用dao层的这个函数,传下来的两个参数,一个是当前access数据库的路径,一个是access数据库的密码。这个函数就这样的。
#23
关于这个dbhelper,是一个封装好的接口,这些都是证实过可行的。
#24
MDB与SQLSERVER在同一机器上,运行你上述代码;
#25
这个我一开始就执行过了啊,我在1楼的时候就说过了,还是这个问题
#26
直接在服务器中查询分析器中运行,将MDB也COPY过去。
#27
对啊,我一开始网上查了很多资料,说是sqlserver要和access放一起的,我就把access数据库上传到服务器上,在在服务器上的查询分析器里试过了,还是这个错误啊
#28
哦,再用了你的这种字符串连接解决了这个问题了。不过表重复了。
#29
无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。"。
确定你这个MDB没有工作组?在ACCESS下打开有无问题?
确定你这个MDB没有工作组?在ACCESS下打开有无问题?
#30
已经解决了这个出错的问题,但关键是我不可能总是把access数据库放到服务器上去啊,本地的access数据库就不能合并进去了吗?
#31
呵呵,说了那么久,还是连接字符串问题,
表重复了:什么意思?
#32
这个mdb没有工作组的,access中打开也没有任何问题
#33
没有办法,你要用这个方法就只能这样
#34
表重复了是我sql语句的问题。已经解决了
现在的关键是我不可能每次要合并进一个access数据库都要放服务器上去吧,本机的access数据库就不能用这个方法了吗
现在的关键是我不可能每次要合并进一个access数据库都要放服务器上去吧,本机的access数据库就不能用这个方法了吗
#35
那如果要服务器上的sqlserver数据库合并进一个本机上的access数据库,又该用何种方法呢?
#36
SELECT * INTO aa
FROM zzzz IN ODBC[ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp];
记住加分
#37
谢谢啊,我试试看,好了就给你加分,谢谢您啊!!1
#38
Office 2003应该没问题 该不会是2007吧
#39
您好,你的这个ODBC的方法,IN odbc里的都是sqlserver数据库的链接
现在我当前连的就是SQLServer的数据库,合并进一个access数据库的,这个链接字符串又是怎么写的哇
现在我当前连的就是SQLServer的数据库,合并进一个access数据库的,这个链接字符串又是怎么写的哇
#40
1、这种方法只能ado连接MDB,用JETSQL,T-SQL是不行的;
2、如果是不同的MDB
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM zzzz IN ODBC[ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp];
OR
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM [ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp].ZZZZ;
2、如果是不同的MDB
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM zzzz IN ODBC[ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp];
OR
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM [ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp].ZZZZ;
#1
看过很多帖子都说是access数据库要和sqlserver数据库放一起的,我把access数据库放到服务器上,并在sqlserver2005上用尝试过查询分析,不过还是一样的错。
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。身份验证失败。
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。身份验证失败。
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
#2
用这种方法,MDB要在本机才行,SQLSERVER可以在服务器上
#3
我的mdb就是在本机的啊,而且sqlserver服务器上的外围配置都配好了的,OPENROWSET也没有问题啊
#4
我的mdb就是在本机的啊
是在运行程序的机器上?
是在运行程序的机器上?
#5
是的,程序和access数据库都在本机上,sqlserver数据库在服务器上
#6
MDB中的密码是什么?用户组 OR 数据库?
#7
mdb的密码就是一个简单的字符串啊
#8
mdb必须也在服务器上,和SQL SERVER在同一台机器上。
QQ群 48866293 / 12035577 / 7440532 / 13666209
ACCESS专业论坛
http://www.accessbbs.cn/bbs/index.php .
http://www.office-cn.net/vvb/ .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
.
http://www.office-cn.net/home/space.php?uid=141646 .
QQ群 48866293 / 12035577 / 7440532 / 13666209
ACCESS专业论坛
http://www.accessbbs.cn/bbs/index.php .
http://www.office-cn.net/vvb/ .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
.
http://www.office-cn.net/home/space.php?uid=141646 .
#9
我是问:是数据库密码还是用户组密码?
#10
no,是在本机
#11
数据库密码啊
#12
连接字串有问题
设置数据库密码,打开密码为 1 打开时需要使用
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\1.mdb;User ID=admin;Password=;Jet OLEDB:Database Password=1"
#13
你的这个只是简单的链接该access数据库啊
我这个OPENROWSET('Microsoft.Jet.OLEDB.4.0', '" + Path + "';'admin';'" + passWord + "', table_A),格式上没有任何问题啊
我这个OPENROWSET('Microsoft.Jet.OLEDB.4.0', '" + Path + "';'admin';'" + passWord + "', table_A),格式上没有任何问题啊
#14
给你讲过,连接字串有问题
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="d:\temp\yy.mdb";User ID=Admin;Password=;Jet OLEDB:Database Password=1234')...zzz
#15
用你上面的那个连接字符串还是出现了我问的这个问题
#16
你直接在查询分析器中运行,看看能否访问MDB,我是测试通过的,
注意MDB要在本机。
#17
我在查询分析器里执行也是出现这个错误
#18
代码贴出来看看
#19
你好,我能加你q或是msn和你聊吗
#20
私信发不出去的,不好意思哦
#21
就在这个帖子中吧
#22
public void SaveAllData(string filePath, string passWord)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into T_FO_COMMITEE select * from ");
strSql.Append("OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + filePath + ";User ID=Admin;Password=;Jet OLEDB:Database Password=" + passWord + "')...T_FO_COMMITEE");
dbhelper.ExecuteNonQuery(strSql.ToString());
}
这个是我的插入一个access数据库中的T_FO_COMMITEE表的数据到当前的sqlserver数据库中的表T_FO_COMMITEE的函数,两个数据库的表结构是一样的
我服务层调用dao层的这个函数,传下来的两个参数,一个是当前access数据库的路径,一个是access数据库的密码。这个函数就这样的。
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into T_FO_COMMITEE select * from ");
strSql.Append("OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + filePath + ";User ID=Admin;Password=;Jet OLEDB:Database Password=" + passWord + "')...T_FO_COMMITEE");
dbhelper.ExecuteNonQuery(strSql.ToString());
}
这个是我的插入一个access数据库中的T_FO_COMMITEE表的数据到当前的sqlserver数据库中的表T_FO_COMMITEE的函数,两个数据库的表结构是一样的
我服务层调用dao层的这个函数,传下来的两个参数,一个是当前access数据库的路径,一个是access数据库的密码。这个函数就这样的。
#23
关于这个dbhelper,是一个封装好的接口,这些都是证实过可行的。
#24
MDB与SQLSERVER在同一机器上,运行你上述代码;
#25
这个我一开始就执行过了啊,我在1楼的时候就说过了,还是这个问题
#26
直接在服务器中查询分析器中运行,将MDB也COPY过去。
#27
对啊,我一开始网上查了很多资料,说是sqlserver要和access放一起的,我就把access数据库上传到服务器上,在在服务器上的查询分析器里试过了,还是这个错误啊
#28
哦,再用了你的这种字符串连接解决了这个问题了。不过表重复了。
#29
无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。"。
确定你这个MDB没有工作组?在ACCESS下打开有无问题?
确定你这个MDB没有工作组?在ACCESS下打开有无问题?
#30
已经解决了这个出错的问题,但关键是我不可能总是把access数据库放到服务器上去啊,本地的access数据库就不能合并进去了吗?
#31
呵呵,说了那么久,还是连接字符串问题,
表重复了:什么意思?
#32
这个mdb没有工作组的,access中打开也没有任何问题
#33
没有办法,你要用这个方法就只能这样
#34
表重复了是我sql语句的问题。已经解决了
现在的关键是我不可能每次要合并进一个access数据库都要放服务器上去吧,本机的access数据库就不能用这个方法了吗
现在的关键是我不可能每次要合并进一个access数据库都要放服务器上去吧,本机的access数据库就不能用这个方法了吗
#35
那如果要服务器上的sqlserver数据库合并进一个本机上的access数据库,又该用何种方法呢?
#36
SELECT * INTO aa
FROM zzzz IN ODBC[ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp];
记住加分
#37
谢谢啊,我试试看,好了就给你加分,谢谢您啊!!1
#38
Office 2003应该没问题 该不会是2007吧
#39
您好,你的这个ODBC的方法,IN odbc里的都是sqlserver数据库的链接
现在我当前连的就是SQLServer的数据库,合并进一个access数据库的,这个链接字符串又是怎么写的哇
现在我当前连的就是SQLServer的数据库,合并进一个access数据库的,这个链接字符串又是怎么写的哇
#40
1、这种方法只能ado连接MDB,用JETSQL,T-SQL是不行的;
2、如果是不同的MDB
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM zzzz IN ODBC[ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp];
OR
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM [ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp].ZZZZ;
2、如果是不同的MDB
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM zzzz IN ODBC[ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp];
OR
INSERT INTO [;DATABASE=D:\TEMP\123.MDB].NEWTT
SELECT * FROM [ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=temp;DataBase=tmp].ZZZZ;