什么是SQL Server中的EXPLAIN表单SQLite?

我使用SQLite数据库并在执行实际查询之前运行EXPLAIN语句,以验证是否有任何尝试在数据库上写入。 现在,我们已迁移到SQL Server,我需要知道查询是否尝试在数据库上写入,或者只是一个简单的SELECT语句。我基本上试图避免任何恶意声​​明。     
已邀请:
您可以通过单击估计的查询计划按钮来查看SSMS中任何查询的估计查询计划。 请参阅MSDN。 但是,如果用户不应该写入数据库,则不应该具有这样做的权限。确保它属于具有受限权限的角色。     

bab

如果您决定采用这条路线,您可以执行以下操作:
set showplan_xml on
go
set noexec on
go
select * from sysobjects
go
set noexec off
go
set showplan_xml off
go
这将返回包含单列XML的3个结果集。第二个结果集是实际查询的查询计划(在这种情况下,
select * from sysobjects
) 但正如我的评论中所述,您最好不要让用户有权进行任何更改。 也可以制作“仅”选择的语句,但这些语句也非常恶意。我可以轻松地编写一个选择,专门锁定数据库中的每个表,并运行一个小时。     

要回复问题请先登录注册