恢复SQL文件

时间:2014-07-02 10:45:34

标签: sql sql-server restore job-scheduling

我最近购买了一个网站并且对MS SQL有很好的了解。我目前正在将数据库还原到新的专用服务器。

到目前为止,这已经成功完成并按预期工作,直到我遇到两个我不知道如何恢复的文件。

文件是TennantCleanUp.sql和UploadJob.sql。

我已经向这些文件的创建者询问了它们是什么以及如何恢复它们。在如何恢复他们方面,他没有任何建议(认为他现在暗示我的问题)。

他确实提供了以下描述(我认为这将有助于我需要的建议)

" TenantClean文件是每15分钟定期运行的作业。

这项工作的目的是,如果潜在租户通过租赁流程并且没有完全完成交易,它会暂时将该财产保持在其他人无法容忍的状态,并向其他用户显示消息说明它在放弃的过程中,但可能会回到列表中。

例如,如果我正在完成与其他人同时添加租户信息的过程,则有两个租户可能会使用相同的属性,而这样第一个启动流程的人就会获得15个分钟优雅,以便在允许任何其他人之前完成它。"

任何人都可以帮助我做下一步的工作来获得这些"工作"在MS SQL 2012中工作。

工作代码

USE [msdb]
GO

/****** Object:  Job [TenantClean]    Script Date: 26/06/2014 11:07:33 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [Database Maintenance]    Script Date: 26/06/2014 11:07:34 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'TenantClean', 
        @enabled=1, 
        @notify_level_eventlog=0, 
        @notify_level_email=0, 
        @notify_level_netsend=0, 
        @notify_level_page=0, 
        @delete_level=0, 
        @description=N'removes tenant info from a property that hasn''t been paid for.', 
        @category_name=N'Database Maintenance', 
        @owner_login_name=N'Chris', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [Remove tenant info older that 15mins]    Script Date: 26/06/2014 11:07:34 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Remove tenant info older that 15mins', 
        @step_id=1, 
        @cmdexec_success_code=0, 
        @on_success_action=1, 
        @on_success_step_id=0, 
        @on_fail_action=2, 
        @on_fail_step_id=0, 
        @retry_attempts=3, 
        @retry_interval=1, 
        @os_run_priority=0, @subsystem=N'TSQL', 
        @command=N'DELETE FROM PropertyTenant
WHERE   PaymentSuccessful = 0
AND DATEDIFF(minute, CreatedDate, GETDATE()) > 15', 
        @database_name=N'compRent', 
        @flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'15minTenantClean', 
        @enabled=1, 
        @freq_type=4, 
        @freq_interval=1, 
        @freq_subday_type=4, 
        @freq_subday_interval=15, 
        @freq_relative_interval=0, 
        @freq_recurrence_factor=0, 
        @active_start_date=20130617, 
        @active_end_date=99991231, 
        @active_start_time=0, 
        @active_end_time=235959, 
        @schedule_uid=N'4749c1e7-a8a9-4482-9d52-22e95a4f7686'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

GO

由于

1 个答案:

答案 0 :(得分:0)

任何人都想知道我想出来了。

要在没有SQL Agent的情况下完成此工作,您必须进入SQL文件并解压缩命令....

就我而言,它是

 @command=N'DELETE FROM PropertyTenant
WHERE   PaymentSuccessful = 0
AND DATEDIFF(minute, CreatedDate, GETDATE()) > 15', 

所以我用了复制的

'DELETE FROM PropertyTenant
WHERE   PaymentSuccessful = 0
AND DATEDIFF(minute, CreatedDate, GETDATE()) > 15'

并将其粘贴到记事本文件中。

sqlcmd -S COMPUTERNAME -E -d DATABASENAME -Q "COMMAND HERE" >> OUTPUTFILENAME.txt 2>&1

并将其替换为以下

sqlcmd -S T800-907 -E -d TenantDB -Q "DELETE FROM PropertyTenant WHERE PaymentSuccessful = 0 AND DATEDIFF(minute, CreatedDate, GETDATE()) > 15" >> TenantCleanLog.txt 2>&1

然后我将其保存为.bat文件。当bat文件运行时,它会将输出保存到tenantCleanLog.txt。

此外,还可以安排从Windows任务计划程序运行。

希望这可以帮助我的任何人:D

然后我在互联网上找到了这段代码