是否有时时的access同步到sqlserver的方法(求高手)

quchen520 2012-08-20 02:37:21
如题
...全文
844 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
quchen520 2012-08-21
  • 打赏
  • 举报
回复
我的是office2010的
但是数据库保存的时候是.mdb文件

然后我用下面的语句
select ID,name1 from
opendataSource('Microsoft.ACE.OLEDB.12.0','Data Source="C:/Users/Administrator/Desktop/AccessDB/Database1.mdb";')...table1

就报下面的错误
Cannot create an instance of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
筱筱澄 2012-08-21
  • 打赏
  • 举报
回复
你的office 是03的?
升级到office2007或以上版本,用Microsoft.ACE.OLEDB.12.0
quchen520 2012-08-21
  • 打赏
  • 举报
回复
不好意思又有新问题了。
我试了下下面的方法
select ID,Title,OwnerName from
opendataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:/BJData.mdb";')...BJAdmin

但是报下面的错误:

OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.


我的sqlserver 是64位的,access是32位的。删除access安装64位的可能可以,但是整个office都要删掉重装太麻烦了。请问下有没有别的方法
quchen520 2012-08-21
  • 打赏
  • 举报
回复
解决了,谢谢大家的帮忙最终的解决方案参考了这里
http://www.sqlservercentral.com/Forums/Topic1300136-392-1.aspx
quchen520 2012-08-21
  • 打赏
  • 举报
回复
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO

select ID,name1 from
opendataSource('Microsoft.ACE.OLEDB.12.0','Data Source="C:/Users/Administrator/Desktop/AccessDB/Database1.mdb";')...table1

就会出现和上面那个一样的错误
OLE DB provider 'Microsoft.ACE.OLEDB.12.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
quchen520 2012-08-20
  • 打赏
  • 举报
回复
谢谢楼上各位解答
请大神出来确认一下,如果真没有
明天结帖
谢谢
ws_hgo 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 5 楼 的回复:

引用 4 楼 的回复:

link server 可以么?怎么做?
我只查到SSMA的方法,但是这样做不是时时的,要手动操作

都是要放到job 里面去做的,你可以设置job的执行频率尽可能的频繁

也就是说link server也是靠job来保证时时性的啊。。
我还期望有sqlserver里面的复制数据库的那种东西来做呢。
请问一下有没有除了job……
[/Quote]
没有
quchen520 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

link server 可以么?怎么做?
我只查到SSMA的方法,但是这样做不是时时的,要手动操作

都是要放到job 里面去做的,你可以设置job的执行频率尽可能的频繁
[/Quote]
也就是说link server也是靠job来保证时时性的啊。。
我还期望有sqlserver里面的复制数据库的那种东西来做呢。
请问一下有没有除了job以外的方法呢?
ws_hgo 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 4 楼 的回复:
link server 可以么?怎么做?
我只查到SSMA的方法,但是这样做不是时时的,要手动操作


MSDN上面有的
http://msdn.microsoft.com/en-us/library/aa213778(v=sql.80).aspx
[/Quote]
你也可以
使用OpenDataSource函数,OPENROWSET函数
ws_hgo 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
link server 可以么?怎么做?
我只查到SSMA的方法,但是这样做不是时时的,要手动操作
[/Quote]

MSDN上面有的
http://msdn.microsoft.com/en-us/library/aa213778(v=sql.80).aspx
  • 打赏
  • 举报
回复
用sql job或维护执行定期执行存储的方式来实现。
具体步骤如下:
1.如果你的access的表里有数据的更新时间,则每次更新或者插入数据时,更新时间(或通过各种其他方法),如果没有时间,则通过主键比较,可能效率低一些。

2. 在sql server中建立连接,创建存储过程,连接到access中,根据更新时间或者主键比较,对于新数据进行更新或者插入。

3. 在Sql Server中建立sql 作业或维护计划,定期执行上述的存储过程。
筱筱澄 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

link server 可以么?怎么做?
我只查到SSMA的方法,但是这样做不是时时的,要手动操作
[/Quote]
都是要放到job 里面去做的,你可以设置job的执行频率尽可能的频繁
quchen520 2012-08-20
  • 打赏
  • 举报
回复
link server 可以么?怎么做?
我只查到SSMA的方法,但是这样做不是时时的,要手动操作
ws_hgo 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你写SP ,把需要同步的数据写在里面方法
1。建立linkserver
2.或者http://blog.csdn.net/ws_hgo/article/details/5518918然后使用JOB 执行这个SP
[/Quote]

靠这个版本好垃圾

1你写SP ,把需要同步的数据写在里面方法
1)建立linkserver
2)或者http://blog.csdn.net/ws_hgo/article/details/5518918
2.然后使用JOB 执行这个SP
筱筱澄 2012-08-20
  • 打赏
  • 举报
回复
mssql 的 job

用openrowset()或opendatasoure()读取access 的数据


两者可能需要在同一个服务器上。
ws_hgo 2012-08-20
  • 打赏
  • 举报
回复
你写SP ,把需要同步的数据写在里面方法
1。建立linkserver
2.或者http://blog.csdn.net/ws_hgo/article/details/5518918然后使用JOB 执行这个SP

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧