如何检索外部 func/proc 的完整定义?
How to retrieve full definition of external func/proc?
我想编写一个过程来构建 sql 代码以定义给定程序集中的所有 func/procs。
程序和标量函数很简单 -
迭代 sys.assemblies/modules/objects/parameters 我可以为创建 func/proc.
准备代码
但是我找不到 tv 函数返回的 table 的定义存储在哪里。像那样编写函数脚本是可能的,所以 - table 的定义必须写在某个地方..
顺便问一下 - 第二个问题:是否有一些工具可以基于 C# 代码创建 func/proc 的 sql 定义?
就像Tables, Table-Valued Functions (Inline, SQL MultiStatement, and SQLCLR), and Views are maintained in the sys.columns
系统目录视图(和sys.all_columns
)。
SELECT obj.[name], obj.[type_desc], col.[name]
FROM sys.objects obj
INNER JOIN sys.columns col
ON col.[object_id] = obj.[object_id]
ORDER BY obj.[type_desc], obj.[name], col.[name];
您需要加入 sys.types
才能获得完整的数据类型名称。
但是,因为以下原因,编写您正在做的事情的脚本意义不大:
- 如果 T-SQL 包装器对象(用于程序集中的 SQLCLR 方法)是由您编写的脚本创建的,那么您已经有了那些
CREATE
语句,和
- 如果 T-SQL 包装器对象是由 SSDT 创建的(有或没有 Visual Studio),那么你已经有了 "create" 脚本(如果你选择让它得到在每次构建时生成)和增量 "publish" 脚本。
在任何一种情况下,这些对象都是从您应该已经拥有的 T-SQL 脚本创建的。除非,我想,你得到了一个包含对象的数据库,并且由于某种原因部署脚本不可用。
Is there some tool to create T-SQL definition of func/proc based on C# code ?
来自数据库还是 DLL/程序集?有一些工具可用于从数据库中编写任何类型的对象脚本。您还可以使用 .NET SMO 类 从数据库中编写定义脚本。如果要扫描 DLL/程序集,则需要使用 .NET 反射 类 遍历每个方法并查看 SqlFunction
、SqlProcedure
、SqlFacet
属性/装饰器。
我想编写一个过程来构建 sql 代码以定义给定程序集中的所有 func/procs。 程序和标量函数很简单 - 迭代 sys.assemblies/modules/objects/parameters 我可以为创建 func/proc.
准备代码但是我找不到 tv 函数返回的 table 的定义存储在哪里。像那样编写函数脚本是可能的,所以 - table 的定义必须写在某个地方..
顺便问一下 - 第二个问题:是否有一些工具可以基于 C# 代码创建 func/proc 的 sql 定义?
就像Tables, Table-Valued Functions (Inline, SQL MultiStatement, and SQLCLR), and Views are maintained in the sys.columns
系统目录视图(和sys.all_columns
)。
SELECT obj.[name], obj.[type_desc], col.[name]
FROM sys.objects obj
INNER JOIN sys.columns col
ON col.[object_id] = obj.[object_id]
ORDER BY obj.[type_desc], obj.[name], col.[name];
您需要加入 sys.types
才能获得完整的数据类型名称。
但是,因为以下原因,编写您正在做的事情的脚本意义不大:
- 如果 T-SQL 包装器对象(用于程序集中的 SQLCLR 方法)是由您编写的脚本创建的,那么您已经有了那些
CREATE
语句,和 - 如果 T-SQL 包装器对象是由 SSDT 创建的(有或没有 Visual Studio),那么你已经有了 "create" 脚本(如果你选择让它得到在每次构建时生成)和增量 "publish" 脚本。
在任何一种情况下,这些对象都是从您应该已经拥有的 T-SQL 脚本创建的。除非,我想,你得到了一个包含对象的数据库,并且由于某种原因部署脚本不可用。
Is there some tool to create T-SQL definition of func/proc based on C# code ?
来自数据库还是 DLL/程序集?有一些工具可用于从数据库中编写任何类型的对象脚本。您还可以使用 .NET SMO 类 从数据库中编写定义脚本。如果要扫描 DLL/程序集,则需要使用 .NET 反射 类 遍历每个方法并查看 SqlFunction
、SqlProcedure
、SqlFacet
属性/装饰器。