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"就会生成所有作业的脚本。
这个方法其实是非常简洁方便的。不足之处就是所有作业的脚本位于同一个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
MS SQL批量生成作业脚本方法介绍总结的更多相关文章
- jinja2批量生成python脚本
在使用airflow的过程中需要大量的dag脚本进行性能测试,如果一个个去编写dag脚本未免太过麻烦,于是想到用python的jinja2模板引擎实现批量脚本生成. 先通过pip命令安装jinja ...
- MS SQL SERVER 数据库日志压缩方法与代码
MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大.一般都是数据库日志引起的!数据库日志的增长可以达到好几百M. DUMP TRANSACTION [数据库名] ...
- PS如何批量生成缩略图(方法可以通用其他重复劳动)
原图 缩略 进入正题,学生时代玩过脚本精灵的应该一点就通 原理就是:录制一系列动作,然后生成脚本,并执行(经常PS水印代码的一个可以用程序实现,一个就可以用PS脚本) 新建一个组 新建一个动作 进行你 ...
- 批量生成DDL脚本
获取用户下所有索引脚本,用于数据迁移后重建索引: set pagesize 0set long 90000set feedback offset echo offspool get_index_ddl ...
- Swift - 下标脚本方法介绍及实例
定义下标脚本之后,可以使用“[]”来存取数据类型的值. 示例1:实现一个我们自定的字符串类,可以方便的通过索引获取某一个字符值,或某一部分字符串.同时也可以通过索引,给某一部分赋值. 1 2 3 4 ...
- MS SQL SERVER执行大脚本文件时,提示“内存不足”的解决办法
问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行 ...
- 批量生成clr脚本
use [dbname]go --1.产生crl程序集的sql --定义表变量,临时存储中间结果集declare @tb table(name nvarchar(100),permission_set ...
- MS SQL 批量给存储过程/函数授权
在工作当中遇到一个类似这样的问题:要对数据库账户的权限进行清理.设置,其中有一个用户Test,只能拥有数据库MyAssistant的DML(更新.插入.删除等)操作权限,另外拥有执行数据库存储过程.函 ...
- [SQL]批量 更改字符集脚本,批量查询约束,批量查询索引
How to change collation of all database objects in SQL Server. Have you encountered a problem where ...
随机推荐
- 上传文件报错--Unable to find 'struts.multipart.saveDir' property setting.
struts2 上传文件时,有时候会报这个错误. Unable to find 'struts.multipart.saveDir' property setting. Defaulting to j ...
- SSL证书(HTTPS)背后的加密算法
SSL证书(HTTPS)背后的加密算法 之前我们介绍SSL工作原理了解到当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信.这些复杂的步骤的第一步 ...
- Go基础系列:简单数据类型
每一个变量都有数据类型,Go中的数据类型有: 简单数据类型:int.float.complex.bool和string 数据结构或组合(composite):struct.array.slice.ma ...
- Go基础系列:指定goroutine的执行顺序
Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 当关闭一个channel时,会 ...
- JDK源码分析(一)—— String
dir 参考文档 JDK源码分析(1)之 String 相关
- js_ajax模拟form表单提交_多文件上传_支持单个删除
需求场景: 用一个input type="file"按钮上传多张图片,可多次上传,可单独删除,最后使用ajax模拟form表单提交功能提交到指定方法中: 问题:由于只有一个file ...
- 在CentOS中部署.Net Core2.1网站
作为一个刚接触linux的新手,在安装环境的时候,折腾了不少时间,写下一篇总结帖,帮助下新人吧~ 做完后再回来看步骤,也很简单,也就以下几步: 1.安装.Net Core环境 2.安装nginx实现端 ...
- Tomcat日志设定
1 Tomcat 日志概述 Tomcat 日志信息分 为 两 类 : 一.是运行中的日志,它主要 记录 运行的一些信息,尤其是一些异常 错误 日志信息 .二.是 访问 日志信息,它 记录 的 访 ...
- C# string数组转int数组
用法 //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转 ...
- struts2_struts2线程安全吗?
线程安全:在一个进程中有多个线程并发执行,线程执行过程中,变量值是相同的,执行结果也是相同的 struts2线程安全 1.每次请求都会重新创建新的action对象,所以线程安全. 2.由于action ...