在.NET中,是否有可能将sql语句传递给SQL服务器进行解析并返回语句中涉及的表和操作类型。因此,对于这样的说法:在运行之前涉及sql语句的列表?
select * from Table1
left outer join Table2 on Table1.id=Table2.foreignid;
delete from Table2 where date < 2009/12/12
SQL Server可能返回参与这样的表:
Table1 Read
Table2 Read
Table2 Delete
所以不执行该语句,它只是返回涉及的表。
我问的原因是我正在使用的应用程序具有应用程序级别的表权限,我想通过表基础应用于表。解析出语句中涉及的表的当前方法使用正则表达式,并且除了简单语句之外的任何其他语法都失败。显然你不能真正使用这种工作的正则表达式
嗯......你的表格不是在那里列出的吗? – 2010-02-23 13:07:58
当然,他们只是想要以可靠的方式解析表格,并以复杂的SQL查询进行扩展。我的例子应该是故意的简单。由于SQL Server必须解析一条sql语句作为执行过程的一部分,我想知道是否可以指示它返回语句中涉及的表而不是执行它 – 2010-02-23 13:40:31
为什么要自己做?为什么不简单地使用数据库级别的权限?这就是他们为... – 2010-02-23 22:56:01