我有一个连接到我的网站(ASP.NET MVC)的数据库A
。每当有数据库A
通过网站的改变/更新,我想运行一个控制台应用程序从数据库A
抓取更新的数据,并把它降低到数据库B
。是否可以在数据库更改/更新上运行控制台应用程序?
使用SqlDependency
或Service Broker
可以实现此功能吗?或者有更好的方法来实现这个功能吗?
我有一个连接到我的网站(ASP.NET MVC)的数据库A
。每当有数据库A
通过网站的改变/更新,我想运行一个控制台应用程序从数据库A
抓取更新的数据,并把它降低到数据库B
。是否可以在数据库更改/更新上运行控制台应用程序?
使用SqlDependency
或Service Broker
可以实现此功能吗?或者有更好的方法来实现这个功能吗?
有办法你如何能做到这个数字。仅举几例:
设置数据库镜像
备份/恢复整个数据库(可以很容易矫枉过正)
使用自定义脚本来更新一个数据库到另一
使用同步框架从ado.net
使用一些自定义代码更新第二分贝
尽管您可以将前三个设置为完全在数据库级别,但4,5(以及3也可以)使用某些应用程序。
为了调用你的代码的时候,你可以同时使用推和拉的办法,所以无论是设置一个计时器或使用的SqlDependency有回调时更新发生。
在数据库级别,你可以设置触发或有重复任务设置。
,我不能说好,但我觉得你可以去触发并调用在SQL服务器https://msdn.microsoft.com/en-us/library/w2kae45k.aspx一个CLR函数。
您可以实现SQL SERVER CLR集成在以下几个方面:
能够与SQL服务器CLR:https://msdn.microsoft.com/en-us/library/ms131048(SQL.100).aspx
写CLR触发:https://msdn.microsoft.com/en-us/library/ms131093(v=sql.100).aspx
欲了解更多信息:https://msdn.microsoft.com/en-us/library/ms254498%28v=vs.110%29.aspx
UPDATE:
您可以创建像波纹管一个SP和在该表中的触发器调用此SP:CREDIT:
CREATE PROCEDURE dbo.usp_ExecCmdShellProcess
AS
BEGIN
DECLARE @job NVARCHAR(100) ;
SET @job = 'xp_cmdshell replacement - ' + CONVERT(NVARCHAR, GETDATE(), 121) ;
EXEC msdb..sp_add_job @job_name = @job,
@description = 'Automated job to execute command shell script',
@owner_login_name = 'sa', @delete_level = 1 ;
EXEC msdb..sp_add_jobstep @job_name = @job, @step_id = 1,
@step_name = 'Command Shell Execution', @subsystem = 'CMDEXEC',
@command = 'c:\Testconsole.exe', @on_success_action = 1 ;
EXEC msdb..sp_add_jobserver @job_name = @job ;
EXEC msdb..sp_start_job @job_name = @job ;
END ;
GO
你可以有一个简单的Windows服务,会定期运行该控制台应用程序和控制台应用程序必须同步与数据库B. – Kurubaran
数据库中的变化的逻辑是'数据库B'应该是'数据库直接拷贝'?为什么不一起使用复制和nix控制台应用程序? – Tom
@Tom no。数据库A和B是独立的数据库。数据库B只需要数据库A中的少量数据。 – jkl