有的时候我们需要定期的备份数据库,而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上的大坑?相关推荐

  1. [3] Window PowerShell DSC 学习系列----如何在PowerShell DSC 5.x 安装最新的DSC Module?

    在PowerShell DSC 4.0的版本的时候,所有的resource Kit必须从一个网站上下载,然后拷贝到相应的目录,比如 PS C:\Users\rodneyzhu.BEIJING> ...

  2. [18] Window PowerShell DSC学习系列---- 如何区分WMF4.0和WMF 5.0?

    我们知道PowerShell DSC是WMF中一部分.那么如何区分机器上装的是WMF4.0还是WMF 5.0? 执行下面的命令: Get-Command -Module PSDesiredStateC ...

  3. [2] Window PowerShell DSC 学习系列----DSC的资源(Resource)以及配置和格式(Configuration Sytax )

    这个章节主要来讲述DSC的资源(Resource)以及配置和格式(Configuration && Sytax ). #1 DSC 资源(The DSC resources) 简单的来 ...

  4. Git学习系列之如何正确且高效地将本地项目上传到Github(图文详解)

    不多说,直接上干货! 首先你需要一个Github账号,所以还没有的话先去注册吧! https://github.com/ 见 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件 ...

  5. NXP S32K144学习系列3----基于FreeRTOS进行多个ms级任务的创建

    其实拿到开发板的那一刻我就想好了,这次不从外设开始学习,而是先要把FreeRTOS移植好再把外设一个一个的学起来.而把FreeRTOS移植到S32K144的第一步就是创建几个周期性任务. 首先先大致介 ...

  6. 数据库备份还原顺序关系(环境:Microsoft SQL Server 2008 R2)

    让新手们了解一下备份顺序 --1.塔建环境(生成测试数据和备份文件) /* 测试环境: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) ...

  7. Python视觉深度学习系列教程 第三卷 第5章 在ImageNet上训练VGGNet

            第三卷 第五章 在ImageNet上训练VGGNet 在本章中,我们将从头开始学习如何在 ImageNet 数据集上训练 VGG16 网络架构. 该网络的特点是简单,仅使用3*3 卷积 ...

  8. Python视觉深度学习系列教程 第三卷 第8章 在ImageNet上训练SqueezeNet

            第三卷 第八章 在ImageNet上训练SqueezeNet         关于在ImageNet大规模视觉识别挑战 (ILSVRC) 上训练深度神经网络的最后一章中,将讨论Sque ...

  9. mysql创建全外连接的视图_「MySql学习」Mysql学习系列之常用数据库查询语句

    一.简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等.10.5pt;font-family:"A ...

最新文章

  1. pycharm 添加数据库驱动
  2. C#之基本知识和语法3 - 数据类型
  3. am.java_6.3.1 从am说起
  4. python内置序列类型_Python序列内置类型之元组类型详解
  5. 如何导入某网站的certificate证书到SAP ABAP系统
  6. SQL 创建数据库、表以及索引
  7. 原生DOM操作方法小结
  8. 用jquery动态添加form表单
  9. 安装mysql 遇到最后一步卡死解决方案
  10. centos卸载不必要的程序_在RHEL / CentOS 7上禁用和删除不需要的服务最小安装
  11. jq控制div是否展示_jQuery判断一个元素是否可见的方法
  12. ionic基本命令行
  13. css3图标 对号,添加删除,箭头,关闭
  14. 5G的遮羞布被撕下了,双十一最畅销的手机竟然是4G手机
  15. 进程和计划任务管理|linux
  16. 每天一个编程题·iOS开发算法提升计划(1)
  17. 元学习笔记——MAML
  18. Cocos2d-x 中文内容设置
  19. 大于4GB镜像文件刻录方法
  20. 【鸡头?凤尾?】选择大公司还是小公司是个问题

热门文章

  1. 『C语言从入门到进阶』第 ⑥ 期 - 初识指针
  2. Portrait Professional 10.9.5汉化破解版(支持CC)
  3. 查询常数 [数据库][MySQL]
  4. IBM MQ 9.2.4 笔记大全
  5. 4.0 苹果系统安装之黑苹果(4)
  6. mstar 平台I2C 配置
  7. 质量保证的新方法:TestOps 概念、原则、方法
  8. Scanpy(二)可视化函数
  9. 2.1.2 操作系统之进程的状态(运行、就绪、阻塞、创建、终止)及转换(就绪->运行、运行->就绪、运行->阻塞、阻塞->就绪)
  10. 《程序员升职记》/《Human Resource Machine》黑屏解决办法