用于创建回滚点并回滚到该特定点的SQL查询

用于创建回滚点并回滚到该特定点的SQL查询,sql,sql-server,commit,rollback,Sql,Sql Server,Commit,Rollback,根据我的项目要求,我想执行两个操作 密码更改 解锁帐户(仅解锁帐户,不更改密码!) 我只希望在两个事务都成功时返回success。如果密码更改成功而解锁失败,则我无法发送成功或失败。因此,我想在更改密码之前创建一个回滚点,如果两个查询都成功执行,我将提交事务。如果其中一个查询失败,我将通过回滚到回滚点来放弃更改。我在用C++做这件事。是否有任何SQL查询,使用我可以创建回滚点并还原到回滚点并提交事务 我使用下面的命令 密码更改 ALTER LOGIN [username] WITH PASSWO

根据我的项目要求,我想执行两个操作

  • 密码更改
  • 解锁帐户(仅解锁帐户,不更改密码!)
  • 我只希望在两个事务都成功时返回success。如果密码更改成功而解锁失败,则我无法发送成功或失败。因此,我想在更改密码之前创建一个回滚点,如果两个查询都成功执行,我将提交事务。如果其中一个查询失败,我将通过回滚到回滚点来放弃更改。我在用C++做这件事。是否有任何SQL查询,使用我可以创建回滚点并还原到回滚点并提交事务

    我使用下面的命令 密码更改

    ALTER LOGIN [username] WITH PASSWORD = N'password'
    
    用于解锁帐户

    ALTER LOGIN [%s] WITH CHECK_POLICY = OFF
    ALTER LOGIN [%s] WITH CHECK_POLICY = ON
    
    提前谢谢


    Santhosh

    一些SQL支持事务。将查询放在事务块中。如果块内的任何查询失败,则全部回滚。以下是MySQL的外观:

    BEGIN;
    ALTER this CHANGE that;
    ...
    COMMIT;
    

    有些SQL支持事务。将查询放在事务块中。如果块内的任何查询失败,则全部回滚。以下是MySQL的外观:

    BEGIN;
    ALTER this CHANGE that;
    ...
    COMMIT;
    

    DDL语句的本质是每一条语句都构成自己的离散事务。可以这样想:在DDL语句开始时发出一个COMMIT,在语句成功完成后发出另一个COMMIT。没有回滚成功的DDL语句的选项

    但是,将允许您将密码更改和解锁语句合并为一个:

    ALTER LOGIN [username] WITH PASSWORD = 'password' UNLOCK ;
    

    没有一条语句可以在不更改密码的情况下解锁密码,因此对于该选项,您需要按照您描述的方式切换CHECK_选项。

    DDL语句的本质是每一条语句都构成自己的离散事务。可以这样想:在DDL语句开始时发出一个COMMIT,在语句成功完成后发出另一个COMMIT。没有回滚成功的DDL语句的选项

    但是,将允许您将密码更改和解锁语句合并为一个:

    ALTER LOGIN [username] WITH PASSWORD = 'password' UNLOCK ;
    
    没有一条语句可以在不更改密码的情况下解锁密码,因此对于该选项,您需要按照描述的方式切换CHECK_选项