问:在我们的开发环境下,每个人都有系统管理员(sa)密码,5个组使用一个数据库。在某个开发人员不小心删除了数据后,我没有办法确定谁删除哪一块数据。当开发人员更新数据库中的数据时,如何审核工作站或登录ID?
答:因为您工作于开发环境下,使用SQL事件探查器和服务器跟踪所带来的性能损失并不会影响生产环境,所以您可以设置一个服务器跟踪,在后台将信息记录在一个表中。然后,您可以搜索该表以确定谁删除了数据。
显然,一次为多个用户分配sa账户会带来许多问题。以下是您应该采取的一些措施:
为每个开发团队创建该数据库的一份拷贝,为每个团队提供一个仅数据库拥有者才有访问权的账户。这样的话,他们就不会互相影响了。
如果每个开发人员都需要sa访问权(例如运行SQL事件探查器跟踪),并且您运行的是SQL Server 2000 Enterprise或Developer Edition,您可以为每个团队提供SQL Server的一个实例及其专用的sa密码。
考虑为每个项目设置一个开发环境,并以一个集成环境的方式由一个版本数据库管理员对所有项目间冲突进行管理。这样的话,因为架构改变脚本在进入集成环境之前已经经过了测试,生产版本的质量将有所改善。
―The Microsoft SQL Server开发团队