是否有列出 SQL Server 中所有内置函数的系统表或系统视图?
Posted
技术标签:
【中文标题】是否有列出 SQL Server 中所有内置函数的系统表或系统视图?【英文标题】:Is there a system table or system view that lists all built-in functions in SQL Server? 【发布时间】:2020-02-27 18:53:23 【问题描述】:我正在构建一个应用程序,用户可以使用它在 SQL Server 数据库中创建自己的用户定义函数。我必须以某种方式验证用户选择的函数名称不等于内置函数的名称(例如 avg、concat、...),因为这会破坏应用程序。
有没有办法查询所有内置函数(不是 UDF)的名称,例如系统视图等?
【问题讨论】:
这能回答你的问题吗? is there any way to get the list of the inbuilt function of the sql server? 这不会给你CONCAT
、AVG
、@SurajKumar 之类的东西。老实说,OP 描述的内容听起来像是XY Problem 和注射的噩梦。
@Larnu 现在撤回了接近投票。
用户创建自己的函数....会出什么问题??老实说,这个想法太可怕了。
@Larnu 出于安全原因,我可以理解您的观点,并且我非常了解即将出现的问题,但这并不能真正帮助我找到答案。我知道 SQL Server Management Studio 可以在对象资源管理器中列出所有系统函数,所以必须有一些方法来查询它们
【参考方案1】:
我认为这是你命名函数的规则,只要你是开发者。这意味着您的函数将始终在数据库中具有您的前缀,如 mf_
这可能意味着 my
function_
和您用户的函数名称。在您的代码中,始终将 mf_
前缀放在用户的函数调用前面,检查它是否存在并使用它。
【讨论】:
我希望找到一种绕过前缀的方法,但由于没有内置函数或类似功能的系统表,我想使用前缀是唯一可行的方法。以上是关于是否有列出 SQL Server 中所有内置函数的系统表或系统视图?的主要内容,如果未能解决你的问题,请参考以下文章