代码之家  ›  专栏  ›  技术社区  ›  Dmitry

在Microsoft SQL Server中哪里可以找到CLR函数文本?

  •  1
  • Dmitry  · 技术社区  · 7 年前

    我创建了一个应用程序,用于同步具有相同结构的Microsoft SQL Server数据库。我需要解决的任务之一是将任何数据库例程(过程、函数、触发器等)从源数据库转移到目标数据库。对于常规传输,我使用查询

    SELECT [definition] FROM sys.sql_modules WITH (NOLOCK) WHERE object_id = OBJECT_ID('SOME_OBJECT_ID')
    

    SELECT * FROM INFORMATION_SCHEMA.ROUTINES where routine_name like '%SOME_ROUTINE_NAME%'
    

    它适用于除CLR函数(具有 [type_desc] = CLR_TABLE_VALUED_FUNCTION [type_desc] = CLR_SCALAR_FUNCTION ).

    其文本未存储在 sys.sql_modules INFORMATION_SCHEMA.ROUTINES 包含值 [ROUTINE_BODY] = EXTERNAL [ROUTINE_DEFINITION] = NULL .

    因此,如果您能提供有关CLR函数文本位置的任何提示,我将不胜感激。

    更新:我不需要转学。NET库函数本身,我只想传输在可编程性中手动创建的包装函数>功能>表值函数。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Chintak Chhapia    7 年前

    如果您想研究CLR函数或过程,则需要执行一些步骤,因为CLR函数是从程序集创建的。

    步骤1:-将程序集导出到文件系统

    第2步:使用。net assembly反编译类 http://ilspy.net/

    如果程序集创建者未执行添加步骤以防止反编译,则此方法将起作用。

        2
  •  0
  •   Dmitry    7 年前