我想知道SQL Server 2008中是否存在与Oracle的DBMS_METADATA.GET_DDL函数相同的内容?您可以将此函数传递给表名,它将返回该表的ddl,以便您可以使用它为架构构建脚本。
我知道我可以进入SSMS并使用它,但我更希望有一个t-sql脚本来为我生成ddl。
谢谢,
取值
答案 0 :(得分:2)
我使用此查询生成查询,但这适用于1个表:
declare @vsSQL varchar(8000)
declare @vsTableName varchar(50)
select @vsTableName = 'Customers'
select @vsSQL = 'CREATE TABLE ' + @vsTableName + char(10) + '(' + char(10)
select @vsSQL = @vsSQL + ' ' + sc.Name + ' ' +
st.Name +
case when st.Name in ('varchar','varchar','char','nchar') then '(' + cast(sc.Length as varchar) + ') ' else ' ' end +
case when sc.IsNullable = 1 then 'NULL' else 'NOT NULL' end + ',' + char(10)
from sysobjects so
join syscolumns sc on sc.id = so.id
join systypes st on st.xusertype = sc.xusertype
where so.name = @vsTableName
order by
sc.ColID
select substring(@vsSQL,1,len(@vsSQL) - 2) + char(10) + ')'
答案 1 :(得分:0)
如果您正在寻找TSQL解决方案,那就非常详细了,正如[本例]¹所示。
较短的替代方案是使用SMO library(example)
¹删除此示例的链接。 Internet Archive Wayback Machine显示错误的方式表明他们无法显示内容。并且跟随原始链接到某个地方恶意。 (严重错误,拨打某些号码的指示等)