我想知道在SQL Server 2008中是否有与Oracle的DBMS_METADATA.GET_DDL函数相同的等价物?您可以将此函数传递给一个表名,并且它将返回该表的ddl,以便您可以使用它为模式构建脚本。相当于DBMS_METADATA.GET_DDL的SQL Server
我知道我可以进入SSMS并使用它,但我宁愿有一个t-sql脚本来为我生成ddl。
感谢,
小号
我想知道在SQL Server 2008中是否有与Oracle的DBMS_METADATA.GET_DDL函数相同的等价物?您可以将此函数传递给一个表名,并且它将返回该表的ddl,以便您可以使用它为模式构建脚本。相当于DBMS_METADATA.GET_DDL的SQL Server
我知道我可以进入SSMS并使用它,但我宁愿有一个t-sql脚本来为我生成ddl。
感谢,
小号
如果你正在寻找一个TSQL的解决方案,这是相当冗长,因为[这个例子]¹节目。
较短的替代方案将被使用SMO library(example)
¹链接,该实施例中删除。 Internet Archive Wayback Machine显示错误,表示无法显示内容。跟着原来的链接去了某个恶意的地方。
你需要更新链接。 – Arbaaz 2013-09-03 05:42:55
现在三个链接中的两个很糟糕。这个答案在它的链接之外没有任何价值。 – 2016-08-31 14:33:12
我使用此查询(严重错误,指令调用一些号码等)生成的查询,但是这项工作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) + ')'
的可能的复制[在SQL Server中,我怎么产生CREATE TABLE语句给定的表?](http://stackoverflow.com/questions/21547/in-sql-server-how-do-i-generate-a-create-table-statement-for-a-given-表) – 2016-08-31 14:44:43
从正文文本中,“...表名...返回该表的ddl。”看起来是重复http://stackoverflow.com/questions/21547/in-sql-server-how-do-i-generate-a-create-table-statement-for-a-given-table涵盖该案件。 – 2016-08-31 14:46:21