在迁移到 Azure DB 期间如何处理 SQL 服务器数据库上的触发器?

What to do with triggers on SQL Server database during migration to Azure DB?

我有一个 SQL 服务器数据库要迁移到 Azure。

我可以用 Azure 上的其他东西替换触发器吗?服务?

或者是删除触发器并重新设计其逻辑的唯一选择?

谢谢。

听起来您正在寻找的是 Azure 中偶尔 运行 逻辑的选项。通过这种方式,我假设您的触发器逻辑不会 在进行数据库调用后立即成为 运行 。这意味着您首先需要以下内容:

  1. 判断是否应处理 'create' 触发逻辑的一些方法
  2. 一些判断是否应该处理 'delete' 触发逻辑的方法

如果您可以在没有 changing/rewriting 您的逻辑(根据要求)的情况下对您的数据进行查询,那么您有几个选项来获得该逻辑 运行。

选项 1 WebJob - 如果你已经有一个 WebApp,你可以创建一个计划的 webjob 到 运行 经常检查 create/delete 触发逻辑是否需要 运行 然后 运行 sql 除了触发器之外的另一种方式。

选项 2 Automation Runbook - 如果您当前没有站点或在 Azure 中计算 运行ning,那么您可以使用 Automation Runbook 来执行检查 create/delete 触发逻辑并执行需要完成的操作。

选项 3 WorkerRole 或 VM - 如果您已经在 Azure 中拥有 WorkerRole 或 VM 运行ning,您可以将触发器检查逻辑添加为 运行 使用机器的 taskscheduler。

今天我尝试在我的 Azure 数据库上创建触发器并且成功了!!!! 很惊讶——但是很开心! :)

create table testingTrigger (c1 int , c2 datetime default getdate())
go
create table testingTrigger2 (c1 int , c2 datetime default getdate())
go
create trigger testingInsertTrigger on testingTrigger
for insert
as begin
    insert into testingTrigger2 select * from inserted
    print 'this is triggered by insert on testingTrigger'
end
go

insert into testingTrigger(c1) select 1
insert into testingTrigger(c1) select 2
insert into testingTrigger(c1) select 3
go
select * from testingTrigger2
go

结论 - 作为一个临时解决方案 - 我暂时使用它,不需要删除触发器来将 MSSQL DB 移动到 Azure 但我猜,随时都可能 unsupported/deprecated,所以我会做好准备。

对于遇到同样问题的人 - 尽情享受吧!!!