SQL Server里面如何导出包含数据的SQL脚本

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:
通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。
因为SQL Server并不包含这个功能,只能靠第三方的代码了。 
以下存储过程可以实现:
CREATE  PROCEDURE dbo.UspOutputData    
@tablename sysname    
AS    
declare @ column  varchar(1000)    
declare @columndata  varchar(1000)    
declare @sql  varchar(4000)    
declare @xtype  tinyint    
declare @ name sysname    
declare @objectId  int    
declare @objectname sysname    
declare @ident  int    

set nocount  on    
set @objectId= object_id(@tablename)    

if @objectId  is  null  -- 判断对象是否存在    
begin    
print  'The object not exists'    
return    
end    
set @objectname= rtrim( object_name(@objectId))    

if @objectname  is  null  or  charindex(@objectname,@tablename)=0  --此判断不严密    
begin    
print  'object not in current database'    
return    
end    

if  OBJECTPROPERTY(@objectId, 'IsTable') < > 1  -- 判断对象是否是table    
begin    
print  'The object is not table'    
return    
end    

select @ident=status&0x80  from  syscolumns  where id=@objectid  and status&0x80=0x80    

if @ident  is  not  null    
print  'SET IDENTITY_INSERT '+@TableName+ ' ON'    

declare syscolumns_cursor  cursor    

for  select c. name,c.xtype  from  syscolumns c  where c.id=@objectid  order  by c.colid    

open syscolumns_cursor    
set @ column= ''    
set @columndata= ''    
fetch next  from syscolumns_cursor  into @ name,@xtype    

while @@fetch_status < >-1    
begin    
if @@fetch_status < >-2    
begin    
if @xtype  not  in(189,34,35,99,98)  --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理    

begin    
set @ column=@ column+ case  when  len(@ column)=0  then ''  else  ',' end+@ name    

set @columndata=@columndata+ case  when  len(@columndata)=0  then  ''  else  ',' ',' ','    
end    

+ case  when @xtype  in(167,175)  then  '' '' '' '' '+'+@ name+ '+' '' '' '' ''  --varchar,char    
when @xtype  in(231,239)  then  '' 'N' '' '' '+'+@ name+ '+' '' '' '' ''  --nvarchar,nchar    
when @xtype=61  then  '' '' '' '' '+convert(char(23),'+@ name+ ',121)+' '' '' '' ''  --datetime    
when @xtype=58  then  '' '' '' '' '+convert(char(16),'+@ name+ ',120)+' '' '' '' ''  --smalldatetime    
when @xtype=36  then  '' '' '' '' '+convert(char(36),'+@ name+ ')+' '' '' '' ''  --uniqueidentifier    
else @ name  end    

end    

end    

fetch next  from syscolumns_cursor  into @ name,@xtype    

end    

close syscolumns_cursor    
deallocate syscolumns_cursor    

set @sql= 'set nocount on select ' 'insert '+@tablename+ '('+@ column+ ') values(' 'as ' '--'','+@columndata+','')'' from '+@tablename    

print '--'+@sql    
exec(@sql)    

if @ident is not null    
print 'SET IDENTITY_INSERT '+@TableName+' OFF'    

GO
 
使用方法: 

exec UspOutputData 你的表名 

选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用SQL Server生成的数据库脚本就可以了。
另外可以利用第三方工具,导出数据可以用powerbuilder。在database painter里面,用SQL选出,或者直接打开表,点击生成的list datawindow,然后在菜单file->save rows as->选择SQL,那么生成的SQL语句就包括建表和insert数据的SQL了。













本文转自周金桥51CTO博客,原文链接: http://blog.51cto.com/zhoufoxcn/166427  ,如需转载请自行联系原作者






相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1天前
|
SQL Java 关系型数据库
实时计算 Flink版操作报错合集之通过flink sql形式同步数据到hudi中,本地启动mian方法报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
17 8
|
2天前
|
SQL 流计算 API
实时计算 Flink版产品使用合集之ClickHouse-JDBC 写入数据时,发现写入的目标表名称与 PreparedStatement 中 SQL 的表名不一致如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
8 0
|
2天前
|
消息中间件 关系型数据库 网络安全
实时计算 Flink版操作报错合集之Flink sql-client 针对kafka的protobuf格式数据建表,报错:java.lang.ClassNotFoundException 如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
13 1
|
2天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在使用Flink SQL向ClickHouse写入数据的过程中出现丢数据或重复数据的情况如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
17 1
|
4天前
|
SQL 安全 算法
【SQL server】玩转SQL server数据库:第四章 数据库安全性
【SQL server】玩转SQL server数据库:第四章 数据库安全性
72 12
|
4天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
71 10
|
4天前
|
SQL 存储 算法
【SQL server】玩转SQL server数据库:第一章 绪论
【SQL server】玩转SQL server数据库:第一章 绪论
43 5
|
4天前
|
SQL 数据库 数据库管理
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
68 11
|
4天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
110 6
|
3天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之当 SQL Server 源数据库中的数据更新后,CDC 吐出的操作(op)是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
13 0