[29] Window PowerShell DSC 学习系列----如何备份数据库和解决一个MS Server 2008上的大坑?
有的时候我们需要定期的备份数据库,而DSC刚好就能非常好的做这个事情。DSC中有一个xSQLServer Module,里面提供了许多操作数据库的方法。但是里面没有任何一个DSC Resource能够备份数据库;所有只能通过另外一种比较委婉的方式:xSQLServerScript的DSC Resource来执行SQL语句而备份数据库。
xSQLServerScript提供了下面的参数:
[Parameter(Mandatory = $true)][System.String]$ServerInstance,[Parameter(Mandatory = $true)][System.String]$SetFilePath,[Parameter(Mandatory = $true)][System.String]$GetFilePath,[Parameter(Mandatory = $true)][System.String]$TestFilePath,[System.Management.Automation.PSCredential][System.Management.Automation.Credential()]$Credential,[System.String[]]$Variable
下面提供一个具体使用的例子:
<#
.EXAMPLEThis example shows how to run SQL script using SQL Authentication.
#>Configuration Example
{param([Parameter(Mandatory = $true)][PSCredential]$SqlCredential)Import-DscResource -ModuleName xSQLServerNode localhost{xSQLServerScript 'RunSQLScript'{ServerInstance = 'localhost\SQL2016'Credential = $SqlCredentialSetFilePath = 'C:\DSCTemp\SQLScripts\Set-RunSQLScript.sql'TestFilePath = 'C:\DSCTemp\SQLScripts\Test-RunSQLScript.sql'GetFilePath = 'C:\DSCTemp\SQLScripts\Get-RunSQLScript.sql'Variable = @("FilePath=C:\temp\log\AuditFiles")}}
}
备份SQL数据的脚本可以写在:Test-RunSQLScript.sql中,比如:
backup database TestDSC to disk = 'device.bak'
恭喜你,你完成了数据库的备份。但是不要高兴的太早,上面生成的DSC MOF文件在MS SQL Server 2012 以及以上版本都能正常运行,但是在MS SQL Server 2008 R2版本以前是运行不成的。其会报出类似于下面的这些错误提示:
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManage
r,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer sqlservername with user sid S-1-5-21-4070628030-840234078-891559575-1109.
VERBOSE: [sqlservername]: LCM: [ Start Set ]
VERBOSE: [sqlservername]: [DSCEngine] Importing the module C:\Program Files\WindowsPowerShell\Modules\xSQLServer\7.0.0.0\DscResour
ces\MSFT_xSQLServerScript\MSFT_xSQLServerScript.psm1 in force mode.
VERBOSE: [sqlservername]: LCM: [ Start Resource ] [[xSQLServerScript]BackUpDB]
VERBOSE: [sqlservername]: LCM: [ Start Test ] [[xSQLServerScript]BackUpDB]
VERBOSE: [sqlservername]: [[xSQLServerScript]BackUpDB] Importing the module MSFT_xSQLServerScript in force mode.
VERBOSE: [sqlservername]: [[xSQLServerScript]BackUpDB] 2017-05-05_10-54-03: Module SqlServer not found, trying to use older SQLPS
module.
Unable to find type [Microsoft.SqlServer.Management.PowerShell.SqlPowerShellSqlExecutionException].
+ CategoryInfo : InvalidOperation: (Microsoft.SqlSe...cutionException:) [], CimException
+ FullyQualifiedErrorId : TypeNotFound
+ PSComputerName : localhost
VERBOSE: [sqlservername]: LCM: [ End Test ] [[xSQLServerScript]BackUpDB] in 0.4060 seconds.
The PowerShell DSC resource '[xSQLServerScript]BackUpDB' with SourceInfo '::16::9::xSQLServerScript' threw one or more non-terminating errors while running
the Test-TargetResource functionality. These errors are logged to the ETW channel called Microsoft-Windows-DSC/Operational. Refer to this channel for more
details.
+ CategoryInfo : InvalidOperation: (:) [], CimException
+ FullyQualifiedErrorId : NonTerminatingErrorFromProvider
+ PSComputerName : localhost
VERBOSE: [sqlservername]: LCM: [ End Set ]
The SendConfigurationApply function did not succeed.
+ CategoryInfo : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : MI RESULT 1
+ PSComputerName : localhost
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 4.183 seconds
问题的原因:
是因为安装了SQL Server 2008 R2之后,里面不支持Invoke-sqlcmd,而Invoke-sqlcmd属于sqlps模块。解决方式是安装sqlps模块并显式的导入sqlps模块,具体步骤如下:
@下载 Microsoft® SQL Server® 2012 Feature Pack(https://www.microsoft.com/en-us/download/confirmation.aspx?id=35580)
@安装下面的顺序安装上面下载下来的安装包。
Microsoft® System CLR Types for Microsoft® SQL Server® 2012 (SQLSysClrTypes.msi)
Microsoft® SQL Server® 2012 Shared Management Objects (SharedManagementObjects.msi)
Microsoft® Windows PowerShell Extensions for Microsoft® SQL Server® 2012 (PowerShellTools.msi)
@运行Import-Module sqlps这个命令。
这样你就能在MS SQL Server 2008上面也能运行成功了。
参考文献:
http://blog.smu.edu/wis/2012/11/26/sql-server-powershell-module-sqlps/
https://github.com/PowerShell/xSQLServer/blob/dev/Examples/Resources/xSQLServerScript/2-RunScriptUsingWindowsAuthentication.ps1
因为本文的大部分文章都是熬夜写出来的,如果您觉得文章对您有帮助,请打赏支持本人的写作热情。
@微信打赏
[29] Window PowerShell DSC 学习系列----如何备份数据库和解决一个MS Server 2008上的大坑?相关推荐
- [3] Window PowerShell DSC 学习系列----如何在PowerShell DSC 5.x 安装最新的DSC Module?
在PowerShell DSC 4.0的版本的时候,所有的resource Kit必须从一个网站上下载,然后拷贝到相应的目录,比如 PS C:\Users\rodneyzhu.BEIJING> ...
- [18] Window PowerShell DSC学习系列---- 如何区分WMF4.0和WMF 5.0?
我们知道PowerShell DSC是WMF中一部分.那么如何区分机器上装的是WMF4.0还是WMF 5.0? 执行下面的命令: Get-Command -Module PSDesiredStateC ...
- [2] Window PowerShell DSC 学习系列----DSC的资源(Resource)以及配置和格式(Configuration Sytax )
这个章节主要来讲述DSC的资源(Resource)以及配置和格式(Configuration && Sytax ). #1 DSC 资源(The DSC resources) 简单的来 ...
- Git学习系列之如何正确且高效地将本地项目上传到Github(图文详解)
不多说,直接上干货! 首先你需要一个Github账号,所以还没有的话先去注册吧! https://github.com/ 见 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件 ...
- NXP S32K144学习系列3----基于FreeRTOS进行多个ms级任务的创建
其实拿到开发板的那一刻我就想好了,这次不从外设开始学习,而是先要把FreeRTOS移植好再把外设一个一个的学起来.而把FreeRTOS移植到S32K144的第一步就是创建几个周期性任务. 首先先大致介 ...
- 数据库备份还原顺序关系(环境:Microsoft SQL Server 2008 R2)
让新手们了解一下备份顺序 --1.塔建环境(生成测试数据和备份文件) /* 测试环境: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) ...
- Python视觉深度学习系列教程 第三卷 第5章 在ImageNet上训练VGGNet
第三卷 第五章 在ImageNet上训练VGGNet 在本章中,我们将从头开始学习如何在 ImageNet 数据集上训练 VGG16 网络架构. 该网络的特点是简单,仅使用3*3 卷积 ...
- Python视觉深度学习系列教程 第三卷 第8章 在ImageNet上训练SqueezeNet
第三卷 第八章 在ImageNet上训练SqueezeNet 关于在ImageNet大规模视觉识别挑战 (ILSVRC) 上训练深度神经网络的最后一章中,将讨论Sque ...
- mysql创建全外连接的视图_「MySql学习」Mysql学习系列之常用数据库查询语句
一.简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等.10.5pt;font-family:"A ...
最新文章
- pycharm 添加数据库驱动
- C#之基本知识和语法3 - 数据类型
- am.java_6.3.1 从am说起
- python内置序列类型_Python序列内置类型之元组类型详解
- 如何导入某网站的certificate证书到SAP ABAP系统
- SQL 创建数据库、表以及索引
- 原生DOM操作方法小结
- 用jquery动态添加form表单
- 安装mysql 遇到最后一步卡死解决方案
- centos卸载不必要的程序_在RHEL / CentOS 7上禁用和删除不需要的服务最小安装
- jq控制div是否展示_jQuery判断一个元素是否可见的方法
- ionic基本命令行
- css3图标 对号,添加删除,箭头,关闭
- 5G的遮羞布被撕下了,双十一最畅销的手机竟然是4G手机
- 进程和计划任务管理|linux
- 每天一个编程题·iOS开发算法提升计划(1)
- 元学习笔记——MAML
- Cocos2d-x 中文内容设置
- 大于4GB镜像文件刻录方法
- 【鸡头?凤尾?】选择大公司还是小公司是个问题
热门文章
- 『C语言从入门到进阶』第 ⑥ 期 - 初识指针
- Portrait Professional 10.9.5汉化破解版(支持CC)
- 查询常数 [数据库][MySQL]
- IBM MQ 9.2.4 笔记大全
- 4.0 苹果系统安装之黑苹果(4)
- mstar 平台I2C 配置
- 质量保证的新方法:TestOps 概念、原则、方法
- Scanpy(二)可视化函数
- 2.1.2 操作系统之进程的状态(运行、就绪、阻塞、创建、终止)及转换(就绪->运行、运行->就绪、运行->阻塞、阻塞->就绪)
- 《程序员升职记》/《Human Resource Machine》黑屏解决办法