每隔一段时间获取一次数据,并且修改数据库数据。

时间:2021-11-22 15:52:50
大家好,我的问题是这样的:我要从别的系统的数据库里获取多个产品型号的数量的数据,这个数据可能有很多条(因为是多个产品型号),我想从我的系统里减去获取的相对应的产品型号的数量,这里的数量就是从别的数据获取过来的数量。

    大体上说就是随时修改我的系统里产品型号的数量,卖了多少,还剩余多少,给客户显示出来,让客户知道每个产品型号还有多少库存。由于卖了多少,这个数量是从别的数据获取的,因此向大家求救,不知道该怎么实现比较好。

22 个解决方案

#1


你可以用JOB定时操作!要么就触发器

#2


如何实现?能不能说的更详细点?谢谢!

#3


SQL里面的作业调度.
事先写好作业的SQL语句.然后设置下时间就可以了

#4


作业,SQL企业管理器->所在数据库->管理->sql sever代理->作业

#5


在别的数据库中用触发器将库存变化保存一个新表内,这样客户只要查询新表就行了.

#6


写一个事件来完成你要的功能即可

#7


1,楼主你的数据库和另一个系统的数据库是不是在同一台数据库服务器上?
2,楼主你对另一个系统的数据库有没有操作权?
3,楼主你对该功能的实时度要求有多高?

假如你对1和2的答案都是肯定的,那建议楼主你用触发器来实现,另外如果楼主你要求的实时度不高的话也可以写个定时执行的Windows服务。

#8


用作业如何实现?不是一个数据库啊,是两个系统的数据库,如何实现?

#9


我的系统数据库和另外一个数据库不在同一台服务器上,对于另外一台服务器,我只是有查询数据的权利,应该是随时更新的,只要另外一个数据库对应的数据发生改变,我这里的相应字段应该立刻发生改变。

#10


怎么没有人了啊?

#11


不是一个数据库啊,是两个系统的数据库,如何实现?
_________________________________________________
比如你要访问的数据库名为A,表为A1,那么在你的数据库中建一个链接服务器(假设名为:lnk_xx),那么通过如下语句就可以访问A数据库的表A1的数据:

select * from lnk_xx.yy(yy指的是登录A数据库的帐号的角色,如dbo等).A1(A1为表名)

#12


如何建立链接服务器?:
http://topic.csdn.net/t/20031213/14/2560158.html

#13


直接从另外一个数据的表获取数据吗?这样好不好?

#14


请大家帮我出出主意啊,这个帖子暂时先不结帖,看看大家谁有更好的办法,谁的办法好,分就给谁,不过还是非常感谢关注我这个帖子的朋友啊!!!!

#15


直接从另外一个数据的表获取数据吗?这样好不好?
re: 不好。
你可以写一个article将数据复制过来,同时加上一个job,这样就可以时时操作了,至于怎么写着两个脚本,你可以查一下资料,结合自己的情况写。(基本上你可以将你需要的表名替换tablename就可以了)

IF NOT EXISTS (SELECT 1 FROM [dbo].[sysarticles] WITH (NOLOCK) WHERE NAME = 'tablename')
BEGIN
        PRINT 'Adding tablename Article to the DomainData Publication...'

EXECUTE sp_addarticle
@publication = N'DomainData', 
@article = N'tablename', 
@source_owner = N'dbo',
@source_object = N'tablename', 
@type = N'logbased',
@description = N'',
@creation_script = N'', 
@pre_creation_cmd = N'drop',
@schema_option = 0x00000000000000F3, 
@identityrangemanagementoption = N'none',
@destination_table = N'tablename', 
@destination_owner = N'dbo',
@status = 16,
@vertical_partition = N'false', 
@ins_cmd = N'CALL [sp_MSins_tablename]',
@del_cmd = N'CALL [sp_MSdel_tablename]', 
@upd_cmd = N'CALL [sp_MSupd_tablename]',
@force_invalidate_snapshot = 1

        PRINT 'Refreshing the subscriptions to DomainData...'

        -- Refresh the subscriptions to apply changes for new article
        EXECUTE sp_refreshsubscriptions N'DomainData'
END

#16


首先谢谢楼上的朋友,这个办法很难实现,首先我要从Oracle数据库里获取需要的数据,其次我不可能在他们系统的数据库里加sp_addarticle,人家不允许添加.

#17


自己先顶一下~~~  ^_^

#18


再顶起来~~~~~

#19


up

#20


为什么没有人来呢?

#21


没有人来啊,只能把这个帖子删除拉。。。。55555555555555。。。。。。。。。。。。。。。。。。。。。

#22


再没有人来,直接删除了。。。。。。高手都哪里去了???!!!

#1


你可以用JOB定时操作!要么就触发器

#2


如何实现?能不能说的更详细点?谢谢!

#3


SQL里面的作业调度.
事先写好作业的SQL语句.然后设置下时间就可以了

#4


作业,SQL企业管理器->所在数据库->管理->sql sever代理->作业

#5


在别的数据库中用触发器将库存变化保存一个新表内,这样客户只要查询新表就行了.

#6


写一个事件来完成你要的功能即可

#7


1,楼主你的数据库和另一个系统的数据库是不是在同一台数据库服务器上?
2,楼主你对另一个系统的数据库有没有操作权?
3,楼主你对该功能的实时度要求有多高?

假如你对1和2的答案都是肯定的,那建议楼主你用触发器来实现,另外如果楼主你要求的实时度不高的话也可以写个定时执行的Windows服务。

#8


用作业如何实现?不是一个数据库啊,是两个系统的数据库,如何实现?

#9


我的系统数据库和另外一个数据库不在同一台服务器上,对于另外一台服务器,我只是有查询数据的权利,应该是随时更新的,只要另外一个数据库对应的数据发生改变,我这里的相应字段应该立刻发生改变。

#10


怎么没有人了啊?

#11


不是一个数据库啊,是两个系统的数据库,如何实现?
_________________________________________________
比如你要访问的数据库名为A,表为A1,那么在你的数据库中建一个链接服务器(假设名为:lnk_xx),那么通过如下语句就可以访问A数据库的表A1的数据:

select * from lnk_xx.yy(yy指的是登录A数据库的帐号的角色,如dbo等).A1(A1为表名)

#12


如何建立链接服务器?:
http://topic.csdn.net/t/20031213/14/2560158.html

#13


直接从另外一个数据的表获取数据吗?这样好不好?

#14


请大家帮我出出主意啊,这个帖子暂时先不结帖,看看大家谁有更好的办法,谁的办法好,分就给谁,不过还是非常感谢关注我这个帖子的朋友啊!!!!

#15


直接从另外一个数据的表获取数据吗?这样好不好?
re: 不好。
你可以写一个article将数据复制过来,同时加上一个job,这样就可以时时操作了,至于怎么写着两个脚本,你可以查一下资料,结合自己的情况写。(基本上你可以将你需要的表名替换tablename就可以了)

IF NOT EXISTS (SELECT 1 FROM [dbo].[sysarticles] WITH (NOLOCK) WHERE NAME = 'tablename')
BEGIN
        PRINT 'Adding tablename Article to the DomainData Publication...'

EXECUTE sp_addarticle
@publication = N'DomainData', 
@article = N'tablename', 
@source_owner = N'dbo',
@source_object = N'tablename', 
@type = N'logbased',
@description = N'',
@creation_script = N'', 
@pre_creation_cmd = N'drop',
@schema_option = 0x00000000000000F3, 
@identityrangemanagementoption = N'none',
@destination_table = N'tablename', 
@destination_owner = N'dbo',
@status = 16,
@vertical_partition = N'false', 
@ins_cmd = N'CALL [sp_MSins_tablename]',
@del_cmd = N'CALL [sp_MSdel_tablename]', 
@upd_cmd = N'CALL [sp_MSupd_tablename]',
@force_invalidate_snapshot = 1

        PRINT 'Refreshing the subscriptions to DomainData...'

        -- Refresh the subscriptions to apply changes for new article
        EXECUTE sp_refreshsubscriptions N'DomainData'
END

#16


首先谢谢楼上的朋友,这个办法很难实现,首先我要从Oracle数据库里获取需要的数据,其次我不可能在他们系统的数据库里加sp_addarticle,人家不允许添加.

#17


自己先顶一下~~~  ^_^

#18


再顶起来~~~~~

#19


up

#20


为什么没有人来呢?

#21


没有人来啊,只能把这个帖子删除拉。。。。55555555555555。。。。。。。。。。。。。。。。。。。。。

#22


再没有人来,直接删除了。。。。。。高手都哪里去了???!!!