动态sql sp_executesql/execute(@sql)暗藏杀机

形如如下的脚本:
declare @sql nvarchar(1000)
set @sql='select '+@sql
exec sp_executesql @stmt=@sql
只是想简单的把一个结果返回给客户端
@sql=' 1+1'
但是这里有一个严重的安全问题!
比如
@sql=' 1+1 delete myuser'
将会删除myuser表的全部信息
除了select外,有没有其它的将信息较安全的返回给客户端的办法?
(print是不行的,我试了)
# 1
there is no safe way, when you allow people to enter straight SQL statements, you basically have given the securities away
saucer-思归 at 2007-10-20 > top of Msdn China Tech,MS-SQL Server,基础类...
# 2
只能再加判断了,只处理出现SELECT的语句。。。。
# 3
微软应该提供一个判断字符串内是否存在系统任何关键字的函数