MS SQL批量生成作业脚本方法介绍总结

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 原文:MS SQL批量生成作业脚本方法介绍总结在迁移或升级SQL Server数据库服务器时,很多场景下我们不能还原msdb,所以我们必须手工迁移SQL Server相关作业。如果手工生成每一个作业的脚本话,费时又费力,其实SQL Server中有好几种方法可以批量生成作业脚本的方法, 下面介绍一下。
原文: MS SQL批量生成作业脚本方法介绍总结

在迁移或升级SQL Server数据库服务器时,很多场景下我们不能还原msdb,所以我们必须手工迁移SQL Server相关作业。如果手工生成每一个作业的脚本话,费时又费力,其实SQL Server中有好几种方法可以批量生成作业脚本的方法, 下面介绍一下。

 

1:SSMS客户端工具批量生成创建作业脚本

 

1:在SSMS>SQL Server Agent下,单击Jobs。

 

2: 按快捷键F7,在Object Explorer Details里面,你会看到所有的作业

 

3: 全选所有作业(CTRL+A),然后右键单击Script Job as,然后选项CREATE TO"就会生成所有作业的脚本。

 

clip_image001[4]

 

 

这个方法其实是非常简洁方便的。不足之处就是所有作业的脚本位于同一个Script,没有按作业名生成相关对应的脚本。

 

 

2:使用PowerShell脚本生成所有作业的脚本

 

有一个现成的PowerShell脚本,相关介绍以及脚本下载具体参考下面链接:

 

https://gallery.technet.microsoft.com/scriptcenter/How-to-get-the-of-all-the-81859696

 

 

PS C:\Users> M:\GetJobScripts\GetAllAgentJobs.ps1

 

cmdlet GetAllAgentJobs.ps1 at command pipeline position 1

Supply values for the following parameters:

ServerName: YourServerName

FilePath: M:\GetJobScripts

Scripting out  xxxxxxxxxxxx  successfully!

Scripting out  xxxxxxxxxxxx  successfully!

.........................................

 

使用该PowerShell脚本可以生成各个作业的各自脚本。非常简洁方便。不过该脚本要求Windows PowerShell 2.0或更高的版本,另外,有些平台是没有测试过的,需要参考上面链接说明。 GetAllAgentJobs.ps1的脚本如下:

 

<#
 The sample scripts are not supported under any Microsoft standard support 
 program or service. The sample scripts are provided AS IS without warranty  
 of any kind. Microsoft further disclaims all implied warranties including,  
 without limitation, any implied warranties of merchantability or of fitness for 
 a particular purpose. The entire risk arising out of the use or performance of  
 the sample scripts and documentation remains with you. In no event shall 
 Microsoft, its authors, or anyone else involved in the creation, production, or 
 delivery of the scripts be liable for any damages whatsoever (including, 
 without limitation, damages for loss of business profits, business interruption, 
 loss of business information, or other pecuniary loss) arising out of the use 
 of or inability to use the sample scripts or documentation, even if Microsoft 
 has been advised of the possibility of such damages. 
#>
 
Param(
[Parameter(Mandatory = $true, position = 0)][string] $ServerName,
[Parameter(Mandatory = $true, position = 1)][string] $FilePath
)
if(Test-Path $FilePath)
{
        #check if the instance name is available on the server
        
         [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") |Out-Null
         $srv = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $ServerName 
         if($ServerName.contains($env:COMPUTERNAME) -and ($srv.VersionString))
         {
            $jobs = $srv.JobServer.Jobs | Where-Object {$_.category -notlike "*repl*" -and $_.category -notlike "*shipping*" -and $_.category -notlike "*Maintenance*"
 
            ForEach ( $job in $jobs) 
            { 
               $jobname = $FilePath +'\' + $job.Name.replace(" ","_").replace("\","_").replace("[","_").replace("]","_").replace(".","_").replace(":","_").replace("*","_") + ".sql" 
              $job.Script() | Out-File $jobname 
                Write-Host 'Scripting out ' $job ' successfully!'
            }
         }
        else 
        {
        Write-Host 'The server name you entered is not available!'
        }
 
}
else
{
Write-Host 'The path does not exist, please retype again!'
}

 

 

方法3:通过SqlDmo组件相关函数生成数据库对象脚本,不过有些版本由于没有安装"Backward Compatibility Components" 导致该脚本不能创建相关脚本文件,个人测试时也遇到不少问题,有兴趣可以试试。

 

 

http://www.databasejournal.com/features/mssql/article.php/2205291/Generate-Scripts-for-SQL-Server-Objects.htm

 

 

参考资料:

 

https://stackoverflow.com/questions/3361163/automatically-create-scripts-for-all-sql-server-jobs

https://gallery.technet.microsoft.com/scriptcenter/How-to-get-the-of-all-the-81859696

http://www.databasejournal.com/features/mssql/article.php/2205291/Generate-Scripts-for-SQL-Server-Objects.htm

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 缓存 Java
sql优化方法
sql优化方法
20 0
|
2月前
|
SQL 存储 BI
sql server 2012远程链接的方法及步骤
sql server 2012远程链接的方法及步骤
20 1
|
1天前
|
SQL 关系型数据库 MySQL
SQL脚本字符串替换
【5月更文挑战第3天】
12 4
|
2天前
|
SQL 关系型数据库 MySQL
SQL脚本列转行
【5月更文挑战第2天】
6 0
|
3天前
|
SQL 关系型数据库 MySQL
SQL脚本行转列
【5月更文挑战第1天】
10 0
|
11天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
11天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
11天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
11天前
|
SQL 数据库
常见寻找 SQL 注入方法总结
常见寻找 SQL 注入方法总结
|
17天前
|
SQL Java 关系型数据库
mybatis-plus启动时自动执行sql脚本
mybatis-plus启动时自动执行sql脚本
19 1