快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

SQL SERVER中合并用户日志表的方式

在维护SQL Server数据库的过程中,大家是不是常常会碰到成千上万的类似log20050901 这种日志表,每一个表中数据都不是很多,一个一个打开看异常不方便,或者有时候我们需要把这些表中的资料汇总,一个一个打开操作也是很麻烦。下面就介绍了一种自动化的合并表的方式。

我的思路是创建一个用户存储过程来完成一系列自动化的操作,以下是代码。

--存储过程我命名为BackupData,可以使用自己定义的名称。

--参数1:@TableTarget 生成的目标表的名称

--参数2:@TableStart 合并开始的表名

--参数3:@TableEnd 合并结束的表名

CREATE PROCEDURE BackupData @TableTarget sysname,@TableStart sysname,@TableEnd sysname

AS

DECLARE tnames_cursor CURSOR

FOR

SELECT TABLE_NAME

FROM INFORMATION_SCHEMA.TABLES

OPEN tnames_cursor

DECLARE @TableName sysname

DECLARE @TablePref sysname

DECLARE @IsTargetExist integer

--判定目标表是否存在



SET @IsTargetExist=(SELECT count(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES where table_name = @TableTarget)

--假如目标表不存在则新建表



IF @istargetexist=0

BEGIN

--EXEC中的语句可以用SQL Server编写的表脚本替换。注重在目标表中不能够存在与需合并表中名称相同的“自动编号”类型的字段。



EXEC (\\\'CREATE TABLE [dbo].[\\\' + @TableTarget + \\\']

(

[LOG1] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,

[LOG2] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,

……

)\\\')

END





FETCH NEXT FROM tnames_cursor INTO @TableName

WHILE (@@FETCH_STATUS <> -1)

BEGIN

IF (@@FETCH_STATUS <> -2)

BEGIN

SELECT @TableName = RTRIM(@TableName)

--以下两行根据日志表的名称更改



--取日志表名的前3位作为标识



SELECT @TablePref = LEFT(@TableName,3)

--判定表名是否附合要求



IF (@TablePref=\\\'log\\\') and (@TableName>=@TableStart) and (@TableName<=@TableEnd)

--开始导入



BEGIN

EXEC (\\\'INSERT INTO \\\' + @TableTarget + \\\' SELECT * FROM \\\' + @TableName )

PRINT \\\'表\\\' + @TableName + \\\'已导入\\\' + @TableTarget + \\\'中\\\'

END

END

FETCH NEXT FROM tnames_cursor INTO @TableName

END

--释放内存

CLOSE tnames_cursor

DEALLOCATE tnames_cursor

把上面代码在SQL查询分析器中运行即生成存储过程BackupData。

BackupData的使用方式如下:

EXEC BackupData ‘合并后表名’,’开始表名’,’结束表名’,例如:

EXEC BackupData ‘_logs200508’,’log200508000000’,’log200508319999’。
返回类别: 教程
上一教程: 在LINUX下访问MS SQL SERVER数据库
下一教程: 一个MYSQL自动备份脚本

您可以阅读与"SQL SERVER中合并用户日志表的方式"相关的教程:
· SQL Server 2000之日志传送功能(1)
· SQL SERVER非正常删除日志文件(LDF)恢复方式
· 关于SQL Server中几个未宣布的访问注册表的扩展存储过
· SQL SERVER2000中用户自定义数据类型的使用
· 缩小SQL Server数据库日志
    微笑服务 优质保证 索取样品