SQL Server 怎样使用SQL输出建表语句

在一般的数据库系统中可使用 表名右键--[Script Table as]--[Create To]--XX 输出建表SQL语句,但在某些SQL Server系统中可能客户仅提供数据库查询权限,导致无法导出建表语句,此时可使用select语句查询系统表生成建表语句
模板语句如下:


Declare @SelectTableName varchar(400),@SelectSchemaName  varchar(400),@CreateSchemaName  varchar(400);
--查询表名
set @SelectTableName='AAA';
--查询Schema名
set @SelectSchemaName='BBB';
--生成Create Table语句的Schema名
set @CreateSchemaName='CCC';


with t1 as (
select t.name as tableName
    , c.name as columnName
    , ty.name as typeName
       , case c.is_nullable when 1 then 'null' else 'not null' end notNullConstraint
    , c.max_length as typeLength 
       ,case when c.max_length in (8000,1,-1,4,8) then c.name+' '+ty.name+',' else 
       c.name+' '+ty.name+'('+ convert(VARCHAR,c.max_length)+')'+',' end columnDef
--     ,c.name+' '+ty.name+'('+ convert(VARCHAR,c.max_length)+')'+',' columnDef
from sys.columns c inner join sys.tables t on t.object_id=c.object_id inner join sys.schemas sch on t.schema_id=sch.schema_id
    inner join sys.types ty on ty.system_type_id=c.system_type_id
where ty.name<>'sysname'
and t.name=@SelectTableName
and sch.name=@SelectSchemaName
--order by t.name,c.column_id
)
select 'Create Table '+@CreateSchemaName+'.'+@SelectTableName+'('+ left((select columnDef+' ' from t1 FOR XML PATH('')),len((select columnDef+' ' from t1 FOR XML PATH('')))-1)+');' CreateTableQuery

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值