SQL Server定时创建动态表

今天下午在生成奖品奖券的时候,发现由于线上奖池表的数据过多(大概已经有100多万条了),造成再生成奖券的时候,就会因为已经存在数据过多,生成数据的时候出现请求数据超时现象。于是我想怎么才能分担表的负担呢? 于是就想如果每隔一段时间,生成一个表,这样不管是查询还是导入数据,都会非常快,不影响数据库的效率。 由于是定时触发的,我第一个想到的是SQL Server中的触发器或作业。但仔细想了下,这个主要是按照时间发生的改变,还是作业比较适合。 于是现在问题,就变成,如何才能创建动态表名称呢? 网上搜了下微软的文档:http://support.microsoft.com/kb/175850/zh-cn,SQL Server有直接执行动态sql语句的方法 于是就有了下面的完整想法。 1、我先写一个动态的创建表的sql语句。代码: declare @tablename nvarchar(50) set @tablename='Dept' set @tablename=@tablename+cast(datepart(year,GETDATE()) as nvarchar(50))+cast(DATEPART(MONTH,GETDATE()) as nvarchar(50)) select @tablename execute ('CREATE TABLE '+@tablename+'( [Id] [nvarchar](32) NOT NULL, [Name] [nvarchar](32) NULL, [Description] [nvarchar](200) NULL, [CreatedDate] [datetime] NULL, [LastModified] [datetime] NULL ) ON [PRIMARY] ') 2、创建一个作业,把要执行的动态脚本复制进去,创建一个每个月触发一次的作业。 3、启动作业,查看作业是否执行。 这样,一个SQL Server自动创建动态表的逻辑就诞生了。希望对大家有帮助。
posted @ 2013-03-06 17:27  keepnode  阅读(1659)  评论(0编辑  收藏  举报