一鹏 发表于 2022-4-6 13:52:11

活字格7.103连接sql server2000

前几天发了个帖子,求助连接sql2000,没能找到有效解决办法,后来不断探索研究,最终找到了个折中的解决方案,在这里分享一下
背景:
公司有erp系统,这系统不能换,也没人敢给升级数据库,怕出了问题解决不了。因为系统已经没有技术支持了
系统情况:数据库 MSSQL SEVER2000,windows2003,数据库与应用服务器都在一台电脑上,白天停机10分钟,都会影响业务
需求:活字格ODBC连接MSSQL2000- 求助中心
我目前的用法是把erp里的数据每天下载,导入活字格,但是这样的数据不及时,也有时候会出错,每天还要等到晚上以后才能看到数据齐全
于是我想到了直联那个sql2000的数据库,结果不支持,只好用了odbc连接,但odbc连接后,在本机设计器上能用,到了服务端,就不能用了,读取不到数据
后来发布到我台式机的windows系统上,确实是可以用的,但如果用的是这个连接,就只能在设计器上使用:

如果改成下边这个连接方式,发布后就可以在服务端使用

方法如下:
点击生成,弹出窗口中新建

然后使用如下这个驱动建立ODBC连接

后边的我就不细说了,建立完成之后,回到选择数据源窗口中,选择文件数据源,在窗口中选择我们刚刚新建的这个文件

然后会提示输入用户名密码,输入完成后,会显示出使用连接字符串内容,点击下方的确定,这样用,发布到windws服务器上,就可以连接sql2000的数据了

如果你的服务器是windows的,那么你到这里,应该就可以解决问题了
但如果你的服务器是linux,咱们接着往下来
linux安装odbc驱动,就不用研究了,因为找不到那么低版本的驱动,我都想了,要是能找到驱动,我在docker里弄个老版本的linux系统也行啊,装个数据库把数据读过来再写到本地数据库里
现实情况是,根本没办法呀,结合大佬们的点拨,我就开始研究数据库
然后最终的办法是,在一个机器上安装了windows2003+mssql2005,再从2005把2000的数据读取过来,再从2016把数据从2005读取过来,间接实现实时数据同步

第一步,从2005里,建立一个链接服务器,找到服务器对象->链接服务器,右键-新建链接服务器



正常来说,这样就能读取数据了,但是2005不知道怎么回事,不能自动登陆,还得加条命令登陆一下,在2005的管理器中新建查询,输入如下命令
exec sys.sp_addlinkedsrvlogin 'sql2000地址或服务器名','false',null,'用户名','密码'
运行之后,这就可以访问那边的数据了,这里要注意,地址必须可以直接访问,如果用服务器名,则必须在同一网段,另外,如果不是默认的1433端口,还需要加个端口号,比如'IP,1424'
现在执行一个查询看看效果:
select * from .[数据库名]..[表名字] where 1=2
注意我这里用了 where 1=2 只显示表结构,不显示数据,如下图,显示已经查询出了表结构

然后,用类似如下的方式把查询到的数据写入本地数据库,首次可以全写过来,以后只要定时写过来就行了
本来我是想用触发器,在sql2000上把数据同步给2005,但是这样就得动sql2000,要在里边写触发器和存储过程,怕出事,所以不在那边操作,退而求其次,在2005里写存储过程,定时调用
把2000的数据读过来写入本地数据库的同名表中,首次使用的,因为本地不存在这个表,所以同时创建:
select * into jp_dserp.dbo.表名字 from .[数据库名]..名字
以后就可以用查询条件的方式,比如每10分钟查询一次,把近10分钟发生的数据写过来

然后在sql2016中,用同样的方式创建一个链接服务器,sql2016是我在用的一个数据库,之所以要放在这里,是因为其它活字格数据也在这里
区别不同的事,在2016中,建立了服务器之后,就自动登陆了,不需要再用那个sp_addlinkedsrvlogin那创建一个登陆了
然后同样的语法,在2016中再执行一次,数据就以从2005中读过来了
最终实现了,在linux服务器上,也能够读取到lsql2000的实时数据了,工程发布到linux上,支持直接连接sql2016数据库。
告别了odbc连接的方式,还得安装odbc相应版本的驱动






MR草田 发表于 2022-4-8 11:19:11

win10或者WIN2016自带的64位ODBC选择【SQL SERVER】这个ODBC驱动就可以直接连上早期的SQL2000数据库啊,为啥要搞这么复杂啊

一鹏 发表于 2022-4-8 11:28:36

设计器可用,服务端不可用啊,windows服务端可用,linux服务端不可用

mfkpie8 发表于 2022-10-18 19:02:55

一鹏 发表于 2022-4-8 11:28
设计器可用,服务端不可用啊,windows服务端可用,linux服务端不可用

服务端有一个配置文件 的你要改一下复制进去就可以了

一鹏 发表于 2022-10-21 09:30:43

mfkpie8 发表于 2022-10-18 19:02
服务端有一个配置文件 的你要改一下复制进去就可以了

原闻其祥,望不吝分享:o
页: [1]
查看完整版本: 活字格7.103连接sql server2000