我最近购买了一个网站并且对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
由于
答案 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
然后我在互联网上找到了这段代码