恢复SQL文件

恢复SQL文件,sql,sql-server,restore,job-scheduling,Sql,Sql Server,Restore,Job Scheduling,我最近购买了一个网站,对MS SQL有很好的了解。我目前正在将数据库恢复到新的专用服务器 到目前为止,这一切都很成功,并按预期工作,直到我遇到两个我不知道如何恢复的文件 文件为TennantCleanUp.sql和UploadJob.sql 我问过这些文件的创建者它们是什么以及如何恢复它们。关于如何恢复他们,他没有提出任何建议。我想他暗示这是我的问题 他确实提供了以下描述,我认为这将有助于我提供所需的建议 TenantClean文件是每15分钟定期运行的作业 此作业的目的是,如果潜在租户经历了

我最近购买了一个网站,对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

谢谢

万一有人想知道我是怎么想出来的

若要在不使用SQL代理的情况下执行此操作,必须进入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 task schedualar运行

希望这对我这样的人有帮助:D


然后我在internet上找到了这段代码

您应该研究使用SQL Server中的代理设置作业计划。我看了这个,甚至看了一段视频,但我的SQL server似乎没有在树中包含这个代理。也可以只还原它们,或者我需要重写它们。如果不还原.sql文件,则执行它们,只需将它们粘贴到与数据库服务器链接的查询窗口中的management studio应用程序中,然后执行脚本。当然,您需要找到代理的计划脚本,但可能只需要执行另一个脚本。但是,由于您没有告诉我们这些脚本的作用,因此不可能在这里给您一个真正的答案。我质疑您的说法,即您对MS SQL非常了解,并且不知道.SQL文件是什么。您是否在文本编辑器中打开它们并查看了它们?然后您需要使用windows调度程序来执行此操作,只需谷歌提供有关如何设置的示例。