2012-11-01 172 views
0

在SSMS中,我使用以下脚本创建数据库。脚本执行完成后,我期望看到sql_modules表中的CREATE TABLE语句。但是我找不到它。为什么表sys.sql_modules为空?

CREATE DATABASE [MyDb] 
GO 
USE [MyDb] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[MyTable] (
    [UID] [uniqueidentifier] NOT NULL, 
    [DateTime] [datetime] NOT NULL 
) 

这是我运行得到表定义查询。但是,我得到了三个空的结果集。任何想法为什么我得到这三个空的结果?

USE MyDb 
GO 

SELECT * 
FROM sys.sql_modules 

SELECT * 
FROM sys.triggers 

SELECT sm.object_id, OBJECT_NAME(sm.object_id) AS object_name, o.type, o.type_desc, sm.definition 
FROM sys.sql_modules AS sm 
JOIN sys.objects AS o ON sm.object_id = o.object_id 
ORDER BY o.type; 
+1

你创建的任何过程,函数,有何看法?桌子不会出现在那里。 [这里的第一段说什么期望找到](http://msdn.microsoft.com/en-us/library/ms175081.aspx) –

+0

我在哪里可以找到表定义? – Martin

+0

你需要从其他视图中弄明白你自己。 [示例这里](http://stackoverflow.com/a/317864/73226)或者您可以使用SMO来编写脚本。 –

回答

2

要获取的列和表的信息,这是一个良好的开端:

SELECT c.*, t.* 
FROM sys.tables AS t 
INNER JOIN sys.columns AS c ON t.object_id = c.object_id 
INNER JOIN sys.schemas AS sch ON t.schema_id = sch.schema_id 
WHERE sch.name = 'dbo' 
    AND t.name = 'YourTable'