代码之家  ›  专栏  ›  技术社区  ›  jennykwan

SQL Server 2000-如何还原连接级别设置的先前状态

  •  2
  • jennykwan  · 技术社区  · 14 年前

    我遇到的问题是设置创建索引视图所需的设置。QUOTED_IDENTIFIER、ANSI_NULLS和ARITHABORT都需要启用。是的,我可以很容易地将这些SET语句放在创建/更改索引视图的更改脚本的顶部。但这些设置是连接级别的。如果后来我从头开始构建一个新实例呢?当我在新实例上运行DBDeploy时,这些设置将渗透到所有后续的更改脚本中,因为所有更改脚本都有效地连接到要在单个连接上执行的最终SQL脚本中。更糟糕的是解析时间选项,比如引用的标识符,它也会应用到之前的所有更改脚本。所以:

    1. 我在SQL Server 2000上。我对连接级别设置的解释是否正确?一、 e.使用GO将脚本分成多个批处理不会限制这些SET选项的范围。如果连接级别设置已重命名为批处理级别,则更高版本如何?
    2. 有没有办法在设置连接级别设置之前保存它的状态,以便在设置之后手动恢复它?

    替代方案很糟糕:

    1. 我可以制定一个固定在项目级别使用的SET选项的策略,并要求所有DEVS将这些设置选项放置在每个更改脚本的顶部,以强制执行它,因为直到部署时间精确地改变应用脚本时才有可能被告知。
    2. 我可以修补DBDeploy本身,使其始终为每个更改脚本使用新连接,但这需要重新设计它处理撤消更改脚本的方式。

    1 回复  |  直到 13 年前
        1
  •  0
  •   Dan Nolan    13 年前

    不幸的是,我不相信有办法在你的连接中获得当前设置状态。

    我不使用DBDeploy.NET,但这听起来确实像是工具的一个限制。DBDeploy.NET应该在项目元数据(如在Visual Studio DB项目中)中定义它随后部署的任何数据库的SET谓词默认值。

    拥有这种确定性方法意味着开发人员可以清楚地知道当他们的脚本执行时,每个集合将处于什么状态。否则,脚本将受到SQL客户机连接或服务器实例中存在的各种默认值的影响。