大家好,我有一个新的应用程序,它使用管理数据库 (SQL Server 2008 R2) 来强制执行数据结构约束。无论如何都要维护这个数据库的表结构,这一点很重要,如果不维护该结构,最大的危险就是用户进入数据库并手动更改它。
在这种情况下,我是否最好在希望“保护”的表上构建一个校验和,并在每次在应用程序中执行某些操作时对其进行检查?或者,我是否最好在服务器端进行所有“保护”?也就是说,创建一个 TRIGGER 说
CREATE TRIGGER EnsureIntegrity ON ProtectedTable
FOR INSERT, UPDATE, DELETE AS
BEGIN
IF (EXISTS (Some_Condidtion)
RAISERROR(/*Some Error Message*/)
ROLLBACK TRANSACTION
END
任何有关如何以最佳方式实现我目标的建议我都非常感谢。
答案1
最好的方法是限制责任方的访问权限。任何能够登录 SQL 服务器并更改数据库中内容的人都应该负责修复它。除此之外,还有良好的备份(可能还有复制),您应该可以为大多数不良事件做好准备。