当前位置: 代码迷 >> Sql Server >> 怎么在SQL Server上每天执行一个创建表的SQL语句
  详细解决方案

怎么在SQL Server上每天执行一个创建表的SQL语句

热度:102   发布时间:2016-04-24 09:34:12.0
如何在SQL Server上每天执行一个创建表的SQL语句?
我想实现在每天晚上0:00分在SQL Server数据库中执行一句创建表的SQL语句来创建一张表,表名是sectorXXXXXXXX,其中XXXXXXXX是年月日组成的,比如sector20141217,或者20150101这样的,如何在SQL Server上实现这个任务呢?

请高手指点迷津。
------解决思路----------------------
首先你要有足够的权限。
然后在SQL 代理里面加一个作业,每天定时执行,里面有配置了。
在作业内容里面使用变量获取当天时间,然后拼接字符串
------解决思路----------------------
建表语句可以这么写:

declare @sql varchar(8000)

set @sql = 'create table sector'+ convert(varchar(10),getdate(),112)+
           '(' + 'x int' +  ')'


exec(@sql)

------解决思路----------------------
这个是建立job的语句,不过需要修改一下,建议把动态创建表的语句 写成一个存储过程,这样方便修改:

--1.新建作业 --> 作业步骤 --> 作业调度 --> 作业服务器
declare @jobname sysname,@db_name sysname


select @jobname = '动态创建表',
       @db_name = db_name()


--1.1创建作业
exec msdb..sp_add_job 
@job_name=@jobname


--1.2创建作业步骤
exec msdb..sp_add_jobstep 
@job_name=@jobname,
@step_name = N'数据处理',
    @subsystem = N'TSQL',
    @database_name=@db_name,
    @command = N'exec 你的存储过程名称;',  
    @retry_attempts = 1, 
    @retry_interval = 1  


--1.3添加作业步骤,每天8点运行一次
EXEC msdb..sp_add_jobschedule 
@job_name=@jobname, 
    @name = N'动态创建表',
    @freq_type=4 ,    --间隔为每天
    @freq_interval=1,
@active_start_time=200000  --8点


--1.4添加目标服务器
EXEC msdb.dbo.sp_add_jobserver 
@job_name = @jobname ,  
@server_name = '你的服务器名称' --@@servername 这个函数的返回值不一定准确 


--1.5 开始作业
exec msdb.dbo.sp_start_job 
@job_name =N'动态创建表';
  相关解决方案