Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL-更新、删除、插入-Whatif场景_Sql Server_Sql Server 2008_Sql - Fatal编程技术网

Sql server SQL-更新、删除、插入-Whatif场景

Sql server SQL-更新、删除、插入-Whatif场景,sql-server,sql-server-2008,sql,Sql Server,Sql Server 2008,Sql,前几天我在读一篇文章,文章展示了如何以whatif类型的场景运行sqlupdate、Insert或Deletes。我不记得他们提到的参数,现在我找不到这篇文章。不知道我是不是在做梦 不管怎样,有人知道SQL2008中是否有一个参数允许您在不实际提交的情况下尝试插入、更新或删除吗?它将实际记录或向您显示它将更新的内容。如果参数的行为与预期一致,则删除该参数并运行它。您的意思是 当SET NOEXEC处于启用状态时,SQL Server 编译每批Transact-SQL 语句,但不执行它们。 当SE

前几天我在读一篇文章,文章展示了如何以whatif类型的场景运行sqlupdate、Insert或Deletes。我不记得他们提到的参数,现在我找不到这篇文章。不知道我是不是在做梦

不管怎样,有人知道SQL2008中是否有一个参数允许您在不实际提交的情况下尝试插入、更新或删除吗?它将实际记录或向您显示它将更新的内容。如果参数的行为与预期一致,则删除该参数并运行它。

您的意思是

当SET NOEXEC处于启用状态时,SQL Server 编译每批Transact-SQL 语句,但不执行它们。 当SET NOEXEC关闭时,所有批次 在编译后执行

请注意,这不会警告/指示诸如密钥冲突之类的事情。

您的意思是

当SET NOEXEC处于启用状态时,SQL Server 编译每批Transact-SQL 语句,但不执行它们。 当SET NOEXEC关闭时,所有批次 在编译后执行


请注意,这不会警告/指示诸如密钥冲突之类的事情。

我相信您所说的是

BEGIN TRANSACTION为发出语句的连接启动本地事务。根据当前的事务隔离级别设置,为支持连接发出的Transact-SQL语句而获取的许多资源将被事务锁定,直到使用COMMIT事务或ROLLBACK事务语句完成。长时间未完成的事务会阻止其他用户访问这些锁定的资源,也会阻止日志截断


我相信你说的是

BEGIN TRANSACTION为发出语句的连接启动本地事务。根据当前的事务隔离级别设置,为支持连接发出的Transact-SQL语句而获取的许多资源将被事务锁定,直到使用COMMIT事务或ROLLBACK事务语句完成。长时间未完成的事务会阻止其他用户访问这些锁定的资源,也会阻止日志截断


我不知道任何支持事务的SQL服务是否具有SQL2008特定功能。您可以这样做:

  • 启动事务(TSQL中的“开始事务”)
  • 其余的插入/更新/删除/什么代码
  • (可选)如果步骤2的默认输出(如“X行受影响”)不够,则需要一些额外的SELECT语句等来输出上述操作的结果
  • 回滚事务(TSQL中的“回滚事务”)
  • (可选)重复测试代码以显示在没有运行步骤2中的代码的情况下情况如何
  • 例如:

    BEGIN TRANSACTION
    -- make changes
    DELETE people WHERE name LIKE 'X%'
    DELETE people WHERE name LIKE 'D%'
    EXEC some_proc_that_does_more_work
    -- check the DB state after the changes
    SELECT COUNT(*) FROM people
    -- undo
    ROLLBACK TRANSACTION
    -- confirm the DB state without the changes
    SELECT COUNT(*) FROM people
    
    (您可能更喜欢在启动事务之前执行可选的“确认”步骤,而不是在回滚事务之后,但我一直都是这样做的,因为它会将两个可能相同的代码部分放在一起,以便于编辑)


    如果您使用类似于此的东西,而不是特定于SQL2008的东西,那么该技术也应该可以转移到其他RDB(如果需要,只需更新语法)。

    我不知道任何支持事务的SQL服务有特定于SQL2008的功能。您可以这样做:

  • 启动事务(TSQL中的“开始事务”)
  • 其余的插入/更新/删除/什么代码
  • (可选)如果步骤2的默认输出(如“X行受影响”)不够,则需要一些额外的SELECT语句等来输出上述操作的结果
  • 回滚事务(TSQL中的“回滚事务”)
  • (可选)重复测试代码以显示在没有运行步骤2中的代码的情况下情况如何
  • 例如:

    BEGIN TRANSACTION
    -- make changes
    DELETE people WHERE name LIKE 'X%'
    DELETE people WHERE name LIKE 'D%'
    EXEC some_proc_that_does_more_work
    -- check the DB state after the changes
    SELECT COUNT(*) FROM people
    -- undo
    ROLLBACK TRANSACTION
    -- confirm the DB state without the changes
    SELECT COUNT(*) FROM people
    
    (您可能更喜欢在启动事务之前执行可选的“确认”步骤,而不是在回滚事务之后,但我一直都是这样做的,因为它会将两个可能相同的代码部分放在一起,以便于编辑)


    如果您使用类似于此的内容,而不是特定于SQL2008的内容,那么该技术也应该可以转移到其他RDB(如果需要,只需更新语法)。

    有一个“验证SQL”功能,可以根据错误的表/列名等检查查询。也许您正在谈论SSMS 2008中的一些新功能,类似于…

    有一个“验证SQL”功能,该功能检查查询是否有错误的表/列名等。也许您正在谈论SSMS 2008中类似的一些新功能…

    好的,终于找到了答案。我把这和我与PowerShell合作的另一个项目混淆了。PowerShell有一个“whatif”参数,可用于显示在删除文件之前要删除的文件


    我向那些花时间试图找到此端口答案的人表示歉意,并向那些作出响应的人表示感谢。

    好的,终于找到了答案。我把这和我与PowerShell合作的另一个项目混淆了。PowerShell有一个“whatif”参数,可用于显示在删除文件之前要删除的文件


    我向那些花时间试图找到此端口答案的人表示歉意,也向那些作出响应的人表示感谢。

    我迟到了七年多,但我怀疑所讨论的功能也可能是输出条款。当然,它可以用于在t-sql存储过程中实现类似于Powershell的whatif功能

    在每个insert/update/delete/merge查询中使用此选项,让SP输出其所做更改的有意义的结果集,例如,输出表名和作为前两列执行的操作,然后输出所有更改的列

    然后,如果需要,只需回滚更改