对于数据库更改管理而言,Microsoft采用的方案是脱机架构开发。脱机架构开发使我们能够对数据库架构进行修改而不用保持与产品数据库的连接。
数据库开发生命周期的四个主要步骤:
使模式脱机
迭代开发
模式测试
生成和部署
使用Visual Studio管理数据库更改的第一步就是创建一个新的项目,数据库架构的脱机表示将会被存储在这个项目中。使架构脱机的过程通常是由数据库管理员完成,如果开发人员具有足够的权限也能完成。
要想对数据库架构进行有效的测试,通常要求数据库中要有一定量的数据。
架构修改的其中一种方法是直接操作组成数据库对象的T-SQL文件。
Visual Studio支持的几类重构:
重命名重构:试图发现架构中必须更新的所有对象,从而使它们用新的名称。
架构之间的对象移动:用于移动数据库架构之间的对象,例如,移动dbo架构和guest架构之间的对象。在对数据库的不同区域进行逻辑分解或实现粒度安全时,应该使用不同的架构。
通配符扩展:用于加速事务,或创建更加可靠的视图或存储过程。
完全限定名:在架构内完全限定对象引用是改进可读性和消除模糊的最好方法。
重构日志负责为部署引擎提供必要的信息,从而使它能区分出Drop/Create操作与重命名或架构移动重构操作之间的差别。
只有使用VS内置的重构工具才会创建或维护数据库重构日志。
要创建测试数据,首先要有一个数据生成计划。一个数据生成计划包含所有必要的设置,从而使VS能够生成符合数据库项目架构要求的数据。
Visual Studio不仅可以使创建函数、表级触发器和存储过程的单元测试变得很容易,而且还可以自动创建检查这些对象的T-SQL存根,然后使用几个内置测试条件之一来验证实际结果是否正确。
为了防止某个测试影响另一个测试,一种方案是将每个测试封装为一个事务。
1 begin transaction 2 --Author your test script here 3 rollback transaction
该方案会在测试执行之后恢复数据库状态。然而,该方案的不足之处在于不会撤销所编写的前置测试脚本或后置测试脚本,因为这些脚本式用不同的连接执行的。尽管可以在后置测试脚本中添加另外的逻辑,清除这些数据,但这也是一个相当费时的过程。另一种方案是将整个测试(包括前置和后置测试脚本)封装在一个事务中,依靠SQL Server的分布式事务协调器回滚整个操作集。
使用Visual Studio内置的静态代码分析引擎还可以帮助我们提高整个T-SQL脚本的质量。T-SQL静态分析可以帮助我们发现脚本中潜在的一些问题,如性能瓶颈,不稳定的查询和对象引用,甚至可以发现比较差的命名规则。
静态分析最有价值的地方在于:它不仅能发现脚本中的问题,而且还记录了有关警告的额外信息,包括问题原因和修复建议。