可以使用 SSMS (Microsoft SQL Server Management Studio) 以及适当的用户名和密码连接到我的 Azure SQL Server 数据库。
如果有人这样做,然后选择其中一个表,并执行“编辑前 200 行”,那么他/她可以手动更改表的值之一 - 通过单击内部并键入新值 - 无需求助于 SQL命令。
可以通过构建第二个“历史”表并向第一个表添加触发器来记录此类更改,以便在任何更新时向历史表添加一行。但是,我不想走那条路。
我想知道是否可以使用 PowerShell 命令记录此类手动数据更改Set-AzSqlDatabaseAudit
?
就像是
Set-AzSqlDatabaseAudit `
-ResourceGroupName "MyResourceGroupName" `
-ServerName "MySqlServerName" `
-DatabaseName "MyDatabaseName" `
-AuditActionGroup "DATABASE_OBJECT_CHANGE_GROUP" `
-AuditAction `
"MANUAL_EDIT ON dbo.LoginTable BY public"
请注意,我不一定对邪恶活动持怀疑态度。当管理员需要登录数据库来修复某些数据问题时,有一些合法的用例,但我想要他们活动的“线索”。
那不会发生。所有修改都是使用 SQL 命令完成的。
在您的触发器案例中,触发器包含一个执行修改的 SQL 命令。
当您说“手动数据更改”时,我们需要详细说明。如果您使用某种工具来修改您的数据,那么该工具会向 SQL Server 发送一条 SQL 注释。或者调用存储过程,该存储过程又具有修改表的 SQL 命令。