SQL Server代理作业-用于删除表并替换为.bak文件的脚本



如何删除包含sql server代理作业的数据库表,并使用sql 中的脚本上传新的.bak文件

这是一个运行良好的脚本,适用于sql server代理作业。如何用.bak文件替换表的相同内容?

DECLARE @jobId binary(16)
SELECT @jobId = job_id FROM msdb.dbo.sysjobs WHERE (name = N'Name of Your Job')
IF (@jobId IS NOT NULL)
BEGIN
EXEC msdb.dbo.sp_delete_job @jobId
END
DECLARE @ReturnCode int
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Name of Your Job'

我对替换为.bak文件有点困惑,但我认为您的意思是.bak文件包含CREATE TABLE sql脚本。

  1. 要删除数据库表:
DROP TABLE [schema].[table_name];
  1. 要从备份脚本文件中重新创建数据库表:
-- Declare variable.
DECLARE @BulkColumn nvarchar(max);
-- Read information from the backup script file and store it in the variable.
SELECT @BulkColumn = [BulkColumn] FROM OPENROWSET(BULK N'<PATH_TO_FILE>', SINGLE_CLOB) AS Contents;
-- Execute the contents of the script dynamically.
EXECUTE sp_executesql @BulkColumn;

您可以先在SSMS中进行测试,以避免任何不希望出现的问题,请确保在执行备份脚本文件之前了解它的样子。

创建一个SQL作业并添加类型为Transact-SQL脚本的步骤,然后选择正确的数据库,粘贴到脚本中并尝试。

最新更新