我需要从应用程序本身运行sql语句。即用户可以进入asp.net applciation,获取一个框并可以从那里运行sql语句
我已经在做这样的事了 Can I rollback Dynamic SQL in SQL Server / TSQL
即运行动态sql
有更好的方法吗
答案 0 :(得分:2)
不要这样做。如果用户键入sp_msforeachtable'truncate table?'...?
,该怎么办?答案 1 :(得分:2)
动态SQL当然是最简单的方法。替代方法是参数化SQL,但这需要让用户与T-SQL分开定义和设置参数。
您可以使用SqlCommand对象将T-SQL字符串提交到SQL Server;将它包装在EXEC中或其他任何东西都没有什么好处,就像你提供的链接一样。您可以在.NET端进行异常处理。
另外,如果你想支持命令批处理,请记住SqlClient和朋友不理解“GO”,这也不是一个真正的T-SQL命令 - 你需要解析输入并打破它自己批量生产。
我确信您明白这样做存在很大的安全风险,而且通常不建议这样做。您可以考虑使用指定具有有限权限的用户的连接字符串来帮助控制/限制其访问权限。
答案 2 :(得分:0)
RunSQL.aspx实用程序可能有所帮助。请参阅Upload T-SQL and execute at your hosting provider using an ASP.NET page。