Bat脚本备份sqlserver 表结构、存储过程、指定表数据:

@echo off
cd /d %~dp0
::备份表结构、存储过程和部分配置表的数据
set LogFile=report.log
set servername="192.168.43.9"
set DBname="TEST"
set User="sa"
set Password="123456*" echo Deployed Time: %date% %time% >> %LogFile%
echo Server Name: %servername% >> %LogFile%
echo DB Name: %DBname% >> %LogFile% set zip7=C:\Program Files\7-Zip\7z.exe
::需要压缩的文件
set Files=back\%date:~0,4%%date:~5,2%%date:~8,2%_*.sql
::压缩后的文件名
set curdate=%date:~0,4%-%date:~5,2%-%date:~8,2% echo -------------------------------备份表结构开始------------------------------------------------>> %LogFile%
Sqlcmd -S %servername% -d %DBname% -U %User% -P %Password% -i table.sql -y 0 -u -X -o back\%date:~0,4%%date:~5,2%%date:~8,2%_table.sql
echo -------------------------------备份表结构结束------------------------------------------------>> %LogFile% echo -------------------------------备份表存储开始------------------------------------------------>> %LogFile%
Sqlcmd -S %servername% -d %DBname% -U %User% -P %Password% -i usp.sql -y 0 -u -X -o back\%date:~0,4%%date:~5,2%%date:~8,2%_usp.sql
echo -------------------------------备份表存储结束------------------------------------------------>> %LogFile% echo -------------------------------备份HD_ZBMX_HZ数据开始------------------------------------------------>> %LogFile%
Sqlcmd -S %servername% -d %DBname% -U %User% -P %Password% -i HD_ZBMX_HZ.sql -y 0 -u -X -o back\%date:~0,4%%date:~5,2%%date:~8,2%_HD_ZBMX_HZ_data.sql
echo -------------------------------备份HD_ZBMX_HZ数据结束------------------------------------------------>> %LogFile% ::echo "%Files%"
::压缩
"%zip7%" a -tzip "back\%curdate%.zip" "%Files%"
::删除
DEL /Q "%Files%" ::删除超过30天的备份--start--
FORFILES /P back\ /M *.zip -d -30 /c "cmd /c del @path" ::pause
exit

配置文件table.sql

set nocount on
declare
@tablenames varchar(max),
@tablename varchar(max) begin
select @tablenames =''
/*定义游标*/
declare table_sql cursor for
SELECT name FROM sysobjects where xtype='U' order by name
open table_sql
fetch next from table_sql into @tablename
while @@FETCH_STATUS=0
begin
set @tablenames = @tablenames+@tablename+','
--print '---1-->'+@tablenames
-- EXEC sp_gettext 'Address_Base'
fetch next from table_sql into @tablename
end
close table_sql
deallocate table_sql EXEC sp_gettext @tablenames end

配置文件:usp.sql

set nocount on
declare
@tablenames varchar(max),
@tablename varchar(max) begin
select @tablenames =''
/*定义游标*/
declare table_sql cursor for
SELECT name FROM sysobjects where xtype='P' order by name
open table_sql
fetch next from table_sql into @tablename
while @@FETCH_STATUS=0
begin
set @tablenames = @tablenames+@tablename+','
--print '---1-->'+@tablenames
-- EXEC sp_gettext 'Address_Base'
fetch next from table_sql into @tablename
end
close table_sql
deallocate table_sql EXEC sp_gettext @tablenames end

配置文件:HD_ZBMX_HZ.sql

set nocount on
declare
@tablenames varchar(max),
@tablename varchar(max)
begin exec UspOutputData 'HD_ZBMX_HZ' end

对应库里需要部署的存储和函数:

sp_gettext

if exists (select 1 from sysobjects where id = object_id('sp_gettext') and type = 'P')
drop proc sp_gettext
go
create procedure [sp_gettext]
@name VARCHAR(max) = NULL
, @identity BIT = 1
, @index TINYINT = 2 -- 0不创建索引 1不创建表 2创建索引
, @new BIT =0
as
/*
[版本号]1.0.0.0.0
[创建时间]2019.09.10
[作者]
[版权]
[描述]
[功能说明]
获取建表语句,存储语句
[参数说明]
[返回值]
[结果集、排序]
[调用的usp]
sp_gettext 'DIM_KSXX,DIM_YYXX'
sp_gettext 'usp_dim_ksxx'
[调用实例]
[修改记录] */ SET ARITHABORT ON;
SET CONCAT_NULL_YIELDS_NULL ON;
SET QUOTED_IDENTIFIER ON;
SET ANSI_NULLS ON;
SET ANSI_PADDING ON;
SET ANSI_WARNINGS ON;
SET NUMERIC_ROUNDABORT OFF; DECLARE @crlf CHAR(2);
SET @crlf = CHAR(13) + CHAR(10);
DECLARE @objid INT; DECLARE @results TABLE (definition NVARCHAR(max)) DECLARE @objects TABLE (id VARCHAR(100), type CHAR(2)); WITH db1(dbname)
AS (SELECT VALUE AS dbname
FROM Split(@name,',')),
db2 AS (SELECT
--CASE WHEN CHARINDEX('.', dbname) = 0 AND CHARINDEX('[', dbname) = 0 THEN '[cn9c080].' + QUOTENAME(dbname)
-- ELSE dbname
-- END AS dbname
CASE WHEN o.[object_id] IS NULL AND tt.[name] IS NULL THEN '%' ELSE LTRIM(ISNULL(o.[object_id],tt.[type_table_object_id])) END AS object_id,
CASE [db1].[dbname] WHEN 'tables' THEN 'U' WHEN 'procs' THEN 'P' else
o.[type] END type
FROM db1
left JOIN sys.[objects] o ON (PARSENAME(db1.[dbname],1) = o.[name] OR OBJECT_ID('[cn9c080].' + QUOTENAME(dbname)) = o.[object_id])
LEFT JOIN sys.table_types tt ON db1.dbname=tt.NAME
) INSERT INTO @objects
SELECT *
FROM db2 ; WITH ColumnDefs
AS (SELECT TableObj = c.[object_id], ColSeq = c.column_id,
ColumnDef = QUOTENAME(c.name) + ' ' + CASE WHEN c.is_computed = 1
THEN 'as ' + COALESCE(k.[definition], '') + CASE
WHEN k.is_persisted = 1
THEN ' PERSISTED' + CASE
WHEN k.is_nullable = 0
THEN ' NOT NULL'
ELSE ''
END
ELSE ''
END
ELSE DataType + CASE WHEN DataType IN (
'decimal',
'numeric')
THEN '(' + CAST(c.precision AS VARCHAR(10)) + CASE
WHEN c.scale <> 0
THEN ',' + CAST(c.scale AS VARCHAR(10))
ELSE ''
END + ')'
WHEN DataType IN ('char',
'varchar',
'nchar',
'nvarchar',
'binary',
'varbinary')
THEN '(' + CASE
WHEN c.max_length = -1
THEN 'max'
ELSE CASE
WHEN DataType IN (
'nchar',
'nvarchar')
THEN CAST(c.max_length / 2 AS VARCHAR(10))
ELSE CAST(c.max_length AS VARCHAR(10))
END
END + ')'
WHEN DataType = 'float' AND c.precision <> 53
THEN '(' + CAST(c.precision AS VARCHAR(10)) + ')'
WHEN DataType IN ('time',
'datetime2',
'datetimeoffset') AND c.scale <> 7
THEN '(' + CAST(c.scale AS VARCHAR(10)) + ')'
ELSE ''
END
END + CASE WHEN c.is_identity = 1 AND @identity = 1
THEN ' IDENTITY(' + CAST(IDENT_SEED(QUOTENAME(OBJECT_SCHEMA_NAME(c.[object_id])) + '.' + QUOTENAME(OBJECT_NAME(c.[object_id]))) AS VARCHAR(30)) + ',' + CAST(IDENT_INCR(QUOTENAME(OBJECT_SCHEMA_NAME(c.[object_id])) + '.' + QUOTENAME(OBJECT_NAME(c.[object_id]))) AS VARCHAR(30)) + ')'
ELSE ''
END + CASE WHEN c.is_rowguidcol = 1
THEN ' ROWGUIDCOL'
ELSE ''
END + CASE WHEN c.xml_collection_id > 0
THEN ' (CONTENT ' + QUOTENAME(SCHEMA_NAME(x.schema_id)) + '.' + QUOTENAME(x.name) + ')'
ELSE ''
END + CASE WHEN c.is_computed = 0 AND UserDefinedFlag = 0
THEN CASE
WHEN c.collation_name <> CAST(DATABASEPROPERTYEX(DB_NAME(),
'collation') AS NVARCHAR(128))
THEN ' COLLATE ' + c.collation_name
ELSE ''
END
ELSE ''
END + CASE
WHEN c.is_computed = 0
THEN CASE
WHEN c.is_nullable = 0
THEN ' NOT'
ELSE ''
END + ' NULL'
ELSE ''
END + CASE
WHEN c.default_object_id > 0 AND ISNULL(@new,0) = 0
THEN ' CONSTRAINT ' + QUOTENAME(d.name) + ' DEFAULT ' + COALESCE(d.[definition],
'')
WHEN c.default_object_id > 0 AND ISNULL(@new,0) = 1
THEN ' DEFAULT ' + COALESCE(d.[definition],
'')
ELSE ''
END
FROM sys.columns c
CROSS APPLY (SELECT DataType = TYPE_NAME(c.user_type_id)
, UserDefinedFlag = CASE WHEN c.system_type_id = c.user_type_id THEN 0
ELSE 1
END) F1
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.[object_id]
LEFT JOIN sys.computed_columns k ON c.[object_id] = k.[object_id] AND c.column_id = k.column_id
LEFT JOIN sys.xml_schema_collections x ON c.xml_collection_id = x.xml_collection_id),
IndexDefs
AS (SELECT TableObj = i.[object_id], IxName = QUOTENAME(i.name+CASE WHEN @new=1 THEN '_'+LEFT(NEWID(),4) ELSE '' end), IxPKFlag = i.is_primary_key,
IxType = CASE WHEN i.is_primary_key = 1 THEN 'PRIMARY KEY '
WHEN i.is_unique = 1 THEN 'UNIQUE '
ELSE ''
END + LOWER(type_desc),
IxDef = '(' + IxColList + ')' + COALESCE(' INCLUDE (' + IxInclList + ')', ''),
IxOpts = IxOptList
FROM sys.indexes i
LEFT JOIN sys.stats s ON i.index_id = s.stats_id AND i.[object_id] = s.[object_id]
CROSS APPLY (SELECT STUFF((SELECT CASE WHEN i.is_padded = 1 THEN ', PAD_INDEX=ON'
ELSE ''
END + CASE WHEN i.fill_factor <> 0
THEN ', FILLFACTOR=' + CAST(i.fill_factor AS VARCHAR(10))
ELSE ''
END + CASE WHEN i.ignore_dup_key = 1
THEN ', IGNORE_DUP_KEY=ON'
ELSE ''
END + CASE WHEN s.no_recompute = 1
THEN ', STATISTICS_RECOMPUTE=ON'
ELSE ''
END + CASE WHEN i.allow_row_locks = 0
THEN ', ALLOW_ROW_LOCKS=OFF'
ELSE ''
END + CASE WHEN i.allow_page_locks = 0
THEN ', ALLOW_PAGE_LOCKS=OFF'
ELSE ''
END), 1, 2, '')) F_IxOpts (IxOptList)
CROSS APPLY (SELECT STUFF((SELECT ',' + QUOTENAME(c.name) + CASE WHEN ic.is_descending_key = 1 AND i.type <> 3
THEN ' DESC'
WHEN ic.is_descending_key = 0 AND i.type <> 3
THEN ' ASC'
ELSE ''
END
FROM sys.index_columns ic
JOIN sys.columns c ON ic.[object_id] = c.[object_id] AND ic.column_id = c.column_id
WHERE ic.[object_id] = i.[object_id] AND ic.index_id = i.index_id AND ic.is_included_column = 0
ORDER BY ic.key_ordinal
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_IxCols (IxColList)
CROSS APPLY (SELECT STUFF((SELECT ',' + QUOTENAME(c.name)
FROM sys.index_columns ic
JOIN sys.columns c ON ic.[object_id] = c.[object_id] AND ic.column_id = c.column_id
WHERE ic.[object_id] = i.[object_id] AND ic.index_id = i.index_id AND ic.is_included_column = 1
ORDER BY ic.key_ordinal
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_IxIncl (IxInclList)
WHERE i.type_desc <> 'HEAP'),
FKDefs
AS (SELECT TableObj = f.parent_object_id, FKName = QUOTENAME(f.name),
FKRef = QUOTENAME(OBJECT_SCHEMA_NAME(f.referenced_object_id)) + '.' + QUOTENAME(OBJECT_NAME(f.referenced_object_id)),
FKColList = ParentColList, FKRefList = RefColList,
FKDelOpt = CASE f.delete_referential_action
WHEN 1 THEN 'CASCADE'
WHEN 2 THEN 'SET NULL'
WHEN 3 THEN 'SET DEFAULT'
END, FKUpdOpt = CASE f.update_referential_action
WHEN 1 THEN 'CASCADE'
WHEN 2 THEN 'SET NULL'
WHEN 3 THEN 'SET DEFAULT'
END, FKNoRepl = f.is_not_for_replication
FROM sys.foreign_keys f
CROSS APPLY (SELECT STUFF((SELECT ',' + QUOTENAME(c.name)
FROM sys.foreign_key_columns k
JOIN sys.columns c ON k.parent_object_id = c.[object_id] AND k.parent_column_id = c.column_id
WHERE k.constraint_object_id = f.[object_id]
ORDER BY constraint_column_id
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_Parent (ParentColList)
CROSS APPLY (SELECT STUFF((SELECT ',' + QUOTENAME(c.name)
FROM sys.foreign_key_columns k
JOIN sys.columns c ON k.referenced_object_id = c.[object_id] AND k.referenced_column_id = c.column_id
WHERE k.constraint_object_id = f.[object_id]
ORDER BY constraint_column_id
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_Ref (RefColList))
INSERT INTO @results ([definition])
SELECT --TableName,
[definition]+CHAR(10)+'GO'+CHAR(10) AS definition
FROM sys.tables t
INNER JOIN @objects o ON(t.[object_id] LIKE o.[id] AND o.[type]='U')
CROSS APPLY (SELECT TableName = QUOTENAME(OBJECT_SCHEMA_NAME(t.[object_id])) + '.' + QUOTENAME(OBJECT_NAME(t.[object_id]))) F_Name
CROSS APPLY (SELECT STUFF((SELECT @crlf + ' ,' + ColumnDef
FROM ColumnDefs
WHERE TableObj = t.[object_id]
ORDER BY ColSeq
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 5, '')) F_Cols (ColumnList)
CROSS APPLY (SELECT STUFF((SELECT @crlf + ' ,CONSTRAINT ' + QUOTENAME(name) + ' CHECK ' + CASE
WHEN is_not_for_replication = 1
THEN 'NOT FOR REPLICATION '
ELSE ''
END + COALESCE([definition],
'')
FROM sys.check_constraints
WHERE parent_object_id = t.[object_id]
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_Const (ChkConstList)
CROSS APPLY (SELECT STUFF((SELECT @crlf + ' ,CONSTRAINT ' + IxName + ' ' + IxType + ' ' + IxDef + COALESCE(' WITH (' + IxOpts + ')',
'')
FROM IndexDefs
WHERE TableObj = t.[object_id] AND IxPKFlag = 1
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_IxConst (IxConstList)
CROSS APPLY (SELECT STUFF((SELECT @crlf + ' ,CONSTRAINT ' + FKName + ' FOREIGN KEY ' + '(' + FKColList + ')' + ' REFERENCES ' + FKRef + ' (' + FKRefList + ')' + CASE
WHEN FKDelOpt IS NOT NULL
THEN ' ON DELETE ' + FKDelOpt
ELSE ''
END + CASE
WHEN FKUpdOpt IS NOT NULL
THEN ' ON UPDATE ' + FKUpdOpt
ELSE ''
END + CASE
WHEN FKNoRepl = 1
THEN ' NOT FOR REPLICATION'
ELSE ''
END
FROM FKDefs
WHERE TableObj = t.[object_id]
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_Keys (FKConstList)
CROSS APPLY (SELECT STUFF((SELECT @crlf + 'CREATE ' + IxType + ' INDEX ' + IxName + ' ON ' + TableName + ' ' + IxDef + COALESCE(' WITH (' + IxOpts + ')',
'')
FROM IndexDefs
WHERE TableObj = t.[object_id] AND IxPKFlag = 0
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_Indexes (IndexList)
CROSS APPLY (SELECT [definition] =
( SELECT CASE WHEN @index <> 1
THEN 'CREATE TABLE ' + TableName + @crlf + '(' + @crlf + ' ' + ColumnList + COALESCE(@crlf + ChkConstList,
'') + COALESCE(@crlf + IxConstList,
'') + COALESCE(@crlf + FKConstList,
'') + @crlf + ')' + @crlf
ELSE ''
END + CASE WHEN @index <> 0 THEN COALESCE(@crlf + IndexList, '')
ELSE ''
END
FOR XML PATH('')
, TYPE).value('.', 'nvarchar(max)')) F_Link
WHERE t.[is_ms_shipped] = 0 AND [definition] <> ''; -- 视图/过程/函数/触发器
INSERT INTO @results ([definition])
SELECT --QUOTENAME(object_schema_name(m.object_id))+'.'+ QUOTENAME(object_name(m.object_id)) AS [name],o.type,
m.definition+CHAR(10)+'GO'+CHAR(10) AS definition
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id = o.object_id
INNER JOIN @objects a ON(m.[object_id] LIKE a.[id] AND a.[type] <>'U'); -- 字段说明
insert into @results ([definition])
select
'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N'''
+ cast(ep.[value] as varchar(100))
+''', @level0type=N''SCHEMA'',@level0name=N'''
+schema_name(schema_id)
+''', @level1type=N''TABLE'',@level1name=N'''
+t.[name]
+''', @level2type=N''COLUMN'',@level2name=N'''
+c.[name]
+''''
+CHAR(10)+'GO'+CHAR(10)
FROM sys.tables AS t
INNER JOIN sys.columns AS c ON t.object_id = c.object_id
LEFT JOIN sys.extended_properties AS ep ON ep.major_id = c.object_id AND ep.minor_id = c.column_id
INNER JOIN @objects o ON(t.[object_id] LIKE o.[id] AND o.[type]='U')
WHERE ep.class =1 SELECT * FROM @results; go

Split

if  exists (select * from sys.objects where object_id = OBJECT_ID(N'[dbo].[Split]') and type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
drop function [dbo].[Split]
go
CREATE FUNCTION[dbo].[Split](@Text VARCHAR(max),@Sign NVARCHAR(4000)) RETURNS @tempTable TABLE(id INT IDENTITY(1,1)PRIMARY KEY,[VALUE]NVARCHAR(4000)) AS BEGIN -- select [dbo].[Split]('1,2',',') DECLARE @StartIndex INT--开始查找的位置 DECLARE @FindIndex INT--找到的位置 DECLARE @Content VARCHAR(4000)--找到的值 --初始化一些变量 SET @StartIndex=1--T-SQL中字符串的查找位置是从1开始的 SET @FindIndex=0 --开始循环查找字符串逗号 WHILE(@StartIndex<=LEN(@Text)) BEGIN --查找字符串函数CHARINDEX第一个参数是要找的字符串 --第二个参数是在哪里查找这个字符串 --第三个参数是开始查找的位置 --返回值是找到字符串的位置 SELECT @FindIndex=CHARINDEX(@Sign,@Text,@StartIndex) --判断有没找到没找到返回0 IF(@FindIndex=0 OR @FindIndex IS NULL) BEGIN --如果没有找到者表示找完了 SET @FindIndex=LEN(@Text)+1 END --截取字符串函数SUBSTRING第一个参数是要截取的字符串 --第二个参数是开始的位置 --第三个参数是截取的长度 --@FindIndex-@StartIndex表示找的的位置-开始找的位置=要截取的长度 --LTRIM和RTRIM是去除字符串左边和右边的空格函数 SET @Content=LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex))) --初始化下次查找的位置 SET @StartIndex=@FindIndex+1 --把找的的值插入到要返回的Table类型中 INSERT INTO @tempTable([VALUE])VALUES(@Content) END RETURN END go

UspOutputData

if exists (select 1 from sysobjects where id = object_id('UspOutputData') and type = 'P')
drop proc UspOutputData
go
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
if @tablename='HD_ZBMX_HZ' -- HD_ZBMX_HZ 特殊处理
begin
set nocount on
select 'insert HD_ZBMX_HZ(zb_id,zb_name,sql_start,sql_middle,sql_end,sql_text,tqsql_text,jlzt,memo,dependindex,orderno,sql_text_first,proc_name,zbzt,ysfs,kslx,fact_table,fact_dlz,condition,kxwdz,gspz,hqsql_text,dlzgs,dylx) values('as 'v1',''''+zb_id+'''',',',''''+zb_name+'''',',',''''+replace(sql_start,'''','"')+'''',',',''''+replace(sql_middle,'''','"')+'''',',',''''+replace(sql_end,'''','"')+'''',',',''''+replace(sql_text,'''','"')+'''',',',''''+replace(tqsql_text,'''','"')+'''',',',jlzt,',',''''+memo+'''',',',''''+dependindex+'''',',',orderno,',',''''+sql_text_first+'''',',',''''+proc_name+'''',',',zbzt,',',ysfs,',',kslx,',',''''+fact_table+'''',',',''''+fact_dlz+'''',',',''''+replace(condition,'''','"')+'''',',',''''+kxwdz+'''',',',''''+gspz+'''',',',''''+replace(hqsql_text,'''','"')+'''',',',''''+dlzgs+'''',',',dylx,')' from HD_ZBMX_HZ
return
end 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 ''v1'','+@columndata+','')'' from '+@tablename --print '--'+@sql
--print @columndata
--print @column
exec(@sql) if @ident is not null
print 'SET IDENTITY_INSERT '+@tablename+' OFF' GO

Bat脚本备份sqlserver 表结构、存储过程、函数、指定表数据的更多相关文章

  1. bat脚本,winscp,shell加mysql存储过程实现mysql单条数据迁移

    起因 公司有个任务,需要迁移mysql中的单条数据.从公司的dev环境到staging环境,dev环境的mysql安装在windows server 2012 R2下,stage是aws的服务器不能直 ...

  2. 15.5 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表

    点击返回:自学Zabbix之路 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表  1. Actions表 actions表记录了当触发器触发时,需要采用的动作. 2.Aler ...

  3. 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表  1. Actions表 ...

  4. 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表.Hosts_grou ...

  5. 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表 Items表记录了i ...

  6. 自学Zabbix之路15.3 Zabbix数据库表结构简单解析-Triggers表、Applications表、 Mapplings表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.3 Zabbix数据库表结构简单解析-Triggers表.Applica ...

  7. 自学Zabbix之路15.4 Zabbix数据库表结构简单解析-Expressions表、Media表、 Events表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.4 Zabbix数据库表结构简单解析-Expressions表.Medi ...

  8. sqlserver中的存储过程 函数 事物 索引及视图

                                           存储过程和函数具体的区别: 核心提示:本质上没区别.只是函数有限制只能返回一个标量,而存储过程可以返回多个.并且函数是可以 ...

  9. SQL 单表分页存储过程和单表多字段排序和任意字段分页存储过程

      第一种:单表多字段排序分页存储过程       --支持单表多字段查询,多字段排序 create PROCEDURE [dbo].[UP_GetByPageFiledOrder] ( ), --表 ...

随机推荐

  1. 【NX二次开发】创建扫描特征

    扫描特征相关函数: 创建扫描特征的相关函数: 1.UF_MODL_create_extrude_trim_opts 拉伸 2.UF_MODL_create_extrude_trim_opts1 拉伸 ...

  2. 29.qt quick-在QML中调用C++类

    1.Qml调用C++类 Qt QML模块提供了一组API,用来将C++类扩展QML中.您可以编写扩展来添加自己的QML类型,扩展现有的Qt类型,或调用无法从普通QML代码访问的C/C++函数本章将学习 ...

  3. anaconda安装VSCODE后,python报错

    重新用anaconda时遇到了一点问题. 测试anaconda捆绑安装的VSCODE时写了一行print(1),然后报错. 后来发现用anaconda下载vscdoe时并不会给python一个路径,这 ...

  4. Servlet--核心内容汇总

    Servlet汇总 因为看公司代码,有个cookie+jwt.Token登录验证接口,于是回顾下servlet.cookie.session.前后端分离restful.jwt.token相关内容.虽然 ...

  5. Dynamic Anchor Learning for Arbitrary-Oriented Object Detection(DAL)

    面向任意目标检测的动态锚点学习 摘要:面向任意的目标广泛地出现在自然场景.航空照片.遥感图像等中,因此面向任意的目标检测得到了广泛的关注.目前许多旋转探测器使用大量不同方向的锚点来实现与地面真实框的空 ...

  6. NOIP模拟测试24「star way to hevaen·lost my music」

    star way to heaven 题解 大致尝试了一下并查集,记忆化搜索,最小生成树 最小生成树是正解,跑最小生成树然后找到最大的值 欧几里德距离最小生成树学习 prim楞跑 至于为什么跑最小生成 ...

  7. 为什么excel里面有的数据用CTRL+F,搜索搜不到?

  8. ORACLE中的PL/SQL

    一. 1.过程,函数,触发器是pl/sql编写.                2. 过程函数触发器是在Oracle中.                      3.pl/sql是非常强大的数据库过 ...

  9. 使用 flux2+kustomize+helm+github 进行多集群 GitOps 云原生渐进式交付

    对于此示例,我们假设有两个集群的场景:暂存(staging)和生产(production). 最终目标是利用 Flux 和 Kustomize 来管理两个集群,同时最大限度地减少重复声明. 我们将配置 ...

  10. npm ERR! Unexpected end of JSON input while parsing near '...'解决方法

    npm install时出现npm err! Unexpected end of JSON input while parsing near'...'错误 输入  npm cache clean -- ...