2009-04-08 118 views
2

我今天刚刚遇到系统视图sys.sql_modules。什么是模块与数据库对象?该视图最显着地返回包含定义文本的列,由sys.syscomments返回。什么是SQL Server模块?

回答

4

这是T-SQL语句组成一个存储过程,存储函数,触发器或视图定义的块。

获取有关存储 过程要显示的Transact-SQL存储过程的定义 , 使用sys.sql_modules目录视图:

的“CREATE PROCEDURE”部分中

从“联机丛书” 存在于其中存在过程 的数据库中。

在sys.sql_modules中,您会找到实际的T-SQL代码。

马克

1

模块是函数,过程,队列和触发器。这些模块调用对象。这就是我从这篇文章中描述“EXECUTE AS”理解为:

EXECUTE AS

+0

正是那个页面导致我首先问我的问题。它告诉我,数据库中有各种模块。我一直都知道DB中有各种对象。从哪里'模块'? – ProfK 2009-04-08 18:56:53

3

所述的模块,SQL-Server的讲是一个独立的对象,其中包含SQL批次,如视图,表值函数,存储过程,触发器或标量函数。 SQL对象是一个更全面的术语,包括一些包含SQL表达式的术语,例如检查或默认约束。一个模块在SQL Server 2005之前被称为“例程”,但我认为这两个术语可以互换使用。

表格构建脚本不存储在SQL Server中,因为表格的组件可以轻松地单独更改。因此它被视为一个对象而不是一个模块。
不被认为是模块的典型对象是系统表,缺省约束,外键约束,服务队列,检查约束,用户表,主键约束,内部表和唯一约束。

列不被视为对象。索引也没有。

是的,它比人们想象的要复杂得多。