2012-11-01 167 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'