【问题标题】:Query to return internal details about stored function in SQL Server database查询以返回有关 SQL Server 数据库中存储函数的内部详细信息
【发布时间】:2010-04-26 02:52:22
【问题描述】:

我已获得访问第三方应用当前使用的 SQL Server 数据库的权限。因此,我没有任何关于该应用程序如何存储数据或如何检索数据的文档。

我可以根据各种表的名称以及用户定义的函数接受和返回的参数来弄清楚一些事情,但我仍然每隔一段时间就会遇到错误。

我在想,如果我能看到存储的函数对返回输出的参数做了什么,那将是非常有帮助的。现在我能想出的只是如何查询输入参数和输出列。

是否有任何内置的information_schema 表可以公开函数在输入和输出之间的作用?

【问题讨论】:

    标签: sql-server information-schema routines


    【解决方案1】:

    如果您可以以某种方式对您的数据库执行查询,并且如果您具有读取系统目录视图的必要权限,那么您可以运行此查询以获取名称、定义(SQL 代码)和更多位有关您的功能的信息:

    SELECT 
        obj.name ,
        obj.type ,
        obj.type_desc ,
        obj.create_date ,
        obj.modify_date ,
        m.definition ,
        m.is_schema_bound 
    FROM 
        sys.objects obj
    INNER JOIN 
        sys.sql_modules m ON obj.object_id = m.object_id
    WHERE 
        obj.type IN ('AF', 'FN', 'FS', 'FT', 'IF', 'TF')
    

    【讨论】:

    • 我没有权限查看我想要的内容,但这对其他事情很有用。
    【解决方案2】:

    如果您有适当的权限,您可以简单地编写所有存储过程和函数的脚本:

    在 SSMS (SQL Server Management Studio) 中右键单击您的数据库,选择任务 –> 生成脚本,确保您的数据库突出显示,然后单击下一步。确保选择脚本输出存储过程和函数的选项。

    您无需 SQL Server 许可证即可安装 SSMS(客户端工具)。

    【讨论】:

    • 我不确定我是否可以使用它,因为我不知道 SSMS 是什么,而且很有可能我无法访问它。如果有帮助,我只是通过 PHP 将查询传递给数据库。
    • SSMS 是否可用于基于 Linux 的机器?如果没有,这仍然是一个问题。我去看看。谢谢!
    【解决方案3】:

    另一种方式是sp_helptext,它会向您显示传递的 SP 或 UDF 的来源;

    sp_helptext fnBlaDeBla

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      相关资源
      最近更新 更多