SQLServer2008 同步Access数据库

2017-04-24  本文已影响151人  oo水桶oo

SQLServer2008 同步Access数据库

环境:

windows2008R2服务器+winSqlServer2008R2

1.服务器的操作系统是否为X64位的操作系统,如果是,安装的office必须也是X64位的,要不然无法显示

2.要使用数据库的OpenDataSource函数,需要开启Ad Hoc Distributed Queries。

启用:

exec sp_configure "show advanced options",1

reconfigure

exec sp_configure "Ad Hoc Distributed Queries",1

reconfigure

使用完成后,关闭Ad Hoc Distributed Queries:

exec sp_configure "Ad Hoc Distributed Queries",0

reconfigure

exec sp_configure "show advanced options",0

reconfigure

3.--建立连接服务器

EXEC sp_addlinkedserver'my_test_link_server','Access2010','Microsoft.ACE.OLEDB.12.0','D:\Program Files\Att\Data\att2000.mdb'

GO

--创建链接服务器登录映射

EXEC sp_addlinkedsrvlogin'my_test_link_server',false,'sa','admin',NULL

GO

--同步数据

delete from att.dbo.CHECKINOUT

GO

INSERT INTO att.dbo.CHECKINOUT(USERID,CHECKTIME,CHECKTYPE,VERIFYCODE,SENSORID,Memoinfo,WorkCode,sn,UserExtFmt)

SELECT CHECKINOUT.USERID,CHECKINOUT.CHECKTIME,CHECKINOUT.CHECKTYPE,CHECKINOUT.VERIFYCODE,CHECKINOUT.SENSORID,CHECKINOUT.Memoinfo,CHECKINOUT.WorkCode,CHECKINOUT.sn,CHECKINOUT.UserExtFmt

FROM [my_test_link_server]...[CHECKINOUT]

order by CHECKINOUT.id

GO

--查询同步后的数据总数

SELECT * FROM [my_test_link_server]...[CHECKINOUT]

order by CHECKINOUT.id

GO

--同步数据

delete from att.dbo.USERINFO

GO

INSERT INTO att.dbo.USERINFO(USERID,Badgenumber,SSN,Name,Gender,TITLE,PAGER,BIRTHDAY,HIREDDAY,street,CITY,STATE,ZIP,OPHONE,FPHONE,VERIFICATIONMETHOD,DEFAULTDEPTID

,SECURITYFLAGS,ATT,INLATE,OUTEARLY,OVERTIME,SEP,HOLIDAY,MINZU,PASSWORD,LUNCHDURATION,PHOTO,mverifypass,Notes,privilege

,InheritDeptSch,InheritDeptSchClass,AutoSchPlan,MinAutoSchInterval,RegisterOT,InheritDeptRule,EMPRIVILEGE,CardNo,FaceGroup,AccGroup,UseAccGroupTZ,VerifyCode

,Expires,ValidCount,ValidTimeBegin,ValidTimeEnd,TimeZone1,TimeZone2,TimeZone3,IDCardNo,IDCardValidTime)

SELECT USERINFO.USERID,USERINFO.Badgenumber,USERINFO.SSN,USERINFO.Name,USERINFO.Gender,USERINFO.TITLE,USERINFO.PAGER,USERINFO.BIRTHDAY,USERINFO.HIREDDAY,USERINFO.street,USERINFO.CITY,USERINFO.STATE,USERINFO.ZIP,USERINFO.OPHONE,USERINFO.FPHONE,USERINFO.VERIFICATIONMETHOD,USERINFO.DEFAULTDEPTID

,USERINFO.SECURITYFLAGS,USERINFO.ATT,USERINFO.INLATE,USERINFO.OUTEARLY,USERINFO.OVERTIME,USERINFO.SEP,USERINFO.HOLIDAY,USERINFO.MINZU,USERINFO.PASSWORD,USERINFO.LUNCHDURATION,USERINFO.PHOTO,USERINFO.mverifypass,USERINFO.Notes,USERINFO.privilege

,USERINFO.InheritDeptSch,USERINFO.InheritDeptSchClass,USERINFO.AutoSchPlan,USERINFO.MinAutoSchInterval,USERINFO.RegisterOT,USERINFO.InheritDeptRule,USERINFO.EMPRIVILEGE,USERINFO.CardNo,USERINFO.FaceGroup,USERINFO.AccGroup,USERINFO.UseAccGroupTZ,USERINFO.VerifyCode

,USERINFO.Expires,USERINFO.ValidCount,USERINFO.ValidTimeBegin,USERINFO.ValidTimeEnd,USERINFO.TimeZone1,USERINFO.TimeZone2,USERINFO.TimeZone3,USERINFO.IDCardNo,USERINFO.IDCardValidTime

FROM [my_test_link_server]...[USERINFO]

GO

--查询同步后的数据总数

SELECT * FROM [my_test_link_server]...[USERINFO]

GO

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

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

建立链接服务器:

exec sp_addlinkedserver 'test ', ' ','SQLOLEDB','192.18.1.3'

说明:上述语句中test为创建的链接服务器的名称,为了在本地服务器的数据库中使用,192.163.1.3为远程数据库服务器的ip地址。

建立链接服务器登录:

exec sp_addlinkedsrvlogin 'test','false',null,'sa','pass'

说明:第一个参数为刚刚建立的链接服务器的名称,最后的sa,pass为远程数据库的登录名与密码。

建立完链接服务器后,可以在本地服务器中操作链接服务器上的数据

select * from test.NorthWind.dbo.product;

说明:查询链接服务器上NorthWind数据库中product表中的信息

不需要时,可以删除链接服务器。

删除链接服务器:

execsp_dropserver'test','droplogins'

说明:第一个参数为要删除的链接服务器的名称,第二个参数最好直接传'droplogins'这样会一次性删除到链接服务器与链接服务器的所有登录。我开始填的是sa,提示我说,“为过程 'sys.sp_dropserver' 指定的参数或选项无效。”,调用exec sp_droplinkedsrvlogin 'test','sa'

后再执行sp_dropserver存储过程,会提示"仍有对服务器 'test' 的远程登录或链接登录",所以干脆直接用上边的一条语句解决问题了。

上一篇下一篇

猜你喜欢

热点阅读