我想知道在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