- 浏览: 307721 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lzz3717845:
有道理,受教了~谢谢
关于SQL中自动增长列值回复(还原)的问题 -
桃汁天天:
ExtJs中如何动态设置其选中状态!! -
sangumaolv2:
你TM在说什么啊。。。。
关于SQL中自动增长列值回复(还原)的问题 -
duyupeng:
你好,我最近也是在使用这个控件,只是用了_id、_parent ...
ExtJs 中的TreeGrid(Ext.ux.maximgb.tg.EditorGridPanel详解与其他问题解决办法) -
wokao_wg:
大伙可以看看作者说的http://www.sencha.com ...
ExtJs 中的TreeGrid(Ext.ux.maximgb.tg.EditorGridPanel详解与其他问题解决办法)2
同一目錄下config.xml:
<?xml version="1.0" encoding="UTF-8"?> <config index="0"> <backup> <whether>0</whether> <!-- wheter download --> <ServerName>10.1.100.13</ServerName> <UserName>test</UserName> <PassWord>test123</PassWord> <DataBase>BarCode09</DataBase> <BackupObject>2;5</BackupObject><!-- All Objects = 0; Tables = 1; Table Triggers = 2; Views = 3; Functions = 4; Stored Procedures = 5; --> <WildCard>el_mp*;el_get_date</WildCard> </backup> <replace> <BackupFolder>D:\sp\masterplan\backup</BackupFolder> <whether>1</whether> <!--whether replace --> <newChar>live.dbo.</newChar> <oldChar>uat18.dbo.</oldChar> <ReplaceFolder>D:\sp\masterplan\replace</ReplaceFolder> </replace> <restore> <whether>0</whether> <!--whether upload/restore --> <ServerName>10.1.100.58</ServerName> <UserName>sa</UserName> <PassWord>sa123</PassWord> <DataBase>stu</DataBase> </restore> </config>
PowerShell腳本如下:
[String]$CurrentPath = get-location; [String]$xmlDocPath = $CurrentPath+"\config.xml"; #write-host $xmlDocPath $xmlDoc = New-Object "System.Xml.XmlDocument" $xmlDoc.Load($xmlDocPath) $modelList = $xmlDoc.GetElementsByTagName("config");#tagName $index=$modelList.ItemOf(0).GetAttribute("index") if($index -eq 0 ) { #-------------------Start Param----------------- $backupNodelist=$xmlDoc.GetElementsByTagName("backup"); $backupConfig=$backupNodelist.ItemOf(0); #first <backup> node #below is backup tag attributes $whetherBackup=$backupConfig.GetElementsByTagName("whether").ItemOf(0).get_InnerXml(); $backupServer=$backupConfig.GetElementsByTagName("ServerName").ItemOf(0).get_InnerXml(); $backupLogin=$backupConfig.GetElementsByTagName("UserName").ItemOf(0).get_InnerXml(); $backupPassWord=$backupConfig.GetElementsByTagName("PassWord").ItemOf(0).get_InnerXml(); $backupDataBase=$backupConfig.GetElementsByTagName("DataBase").ItemOf(0).get_InnerXml(); $backupObject=$backupConfig.GetElementsByTagName("BackupObject").ItemOf(0).get_InnerXml(); $backupWildCard=$backupConfig.GetElementsByTagName("WildCard").ItemOf(0).get_InnerXml(); $replaceNodelist=$xmlDoc.GetElementsByTagName("replace"); $replaceConfig=$replaceNodelist.ItemOf(0); #first <replace> node #below is replace tag attributes $backupFolder=$replaceConfig.GetElementsByTagName("BackupFolder").ItemOf(0).get_InnerXml(); $whetherReplace=$replaceConfig.GetElementsByTagName("whether").ItemOf(0).get_InnerXml(); $newChar=$replaceConfig.GetElementsByTagName("newChar").ItemOf(0).get_InnerXml(); $oldChar=$replaceConfig.GetElementsByTagName("oldChar").ItemOf(0).get_InnerXml(); $replaceFolder=$replaceConfig.GetElementsByTagName("ReplaceFolder").ItemOf(0).get_InnerXml(); $restoreNodelist=$xmlDoc.GetElementsByTagName("restore"); $restoreConfig=$restoreNodelist.ItemOf(0); #first <restore> node #below is restore tag attributes $whetherRestore=$restoreConfig.GetElementsByTagName("whether").ItemOf(0).get_InnerXml(); $restoreServer=$restoreConfig.GetElementsByTagName("ServerName").ItemOf(0).get_InnerXml(); $restoreLogin=$restoreConfig.GetElementsByTagName("UserName").ItemOf(0).get_InnerXml(); $restorePassWord=$restoreConfig.GetElementsByTagName("PassWord").ItemOf(0).get_InnerXml(); $restoreDataBase=$restoreConfig.GetElementsByTagName("DataBase").ItemOf(0).get_InnerXml(); #-------------------End Param---------------------- #Load Class #cls #load assemblies [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null #Need SmoExtended for backup [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null [Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null [Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null $serverConn=new-object Microsoft.SqlServer.Management.Common.ServerConnection $serverConn.ServerInstance=$backupServer $serverConn.LoginSecure =$false $serverConn.Login = $backupLogin $serverConn.Password =$backupPassWord #trap errors(catch error ) $errors =$backupFolder+"\errors.txt" trap { "______________________" | out-file $errors -append; "ERROR SCRIPTING TABLES" | out-file $errors -append; get-date | out-file $errors -append; "ERROR: " + $_ | out-file $errors -append; "`backupServer = $backupServer" | out-file $errors -append; "`backupDataBae = $backupDataBase" |out-file $errors -append; "`backupFolder = $backupFolder" | out-file $errors -append; "`restoreServer = $restoreServer" | out-file $errors -append; "`restoreDataBae = $restoreDataBase " | out-file $errors -append; #throw "ERROR: See $errors" } function MakeDirectory { param([string]$DirName) Process { if (!(Test-Path -path $DirName)) { New-Item $DirName -type directory | Out-Null } } } $srv = new-object Microsoft.SqlServer.Management.Smo.Server($serverConn) $db=$srv.databases[$backupDataBase] $dbName=$db.Name $scr = New-Object "Microsoft.SqlServer.Management.Smo.Scripter" $scr.Server = $srv $scrOptions = New-Object "Microsoft.SqlServer.Management.SMO.ScriptingOptions" #Script Options Setting $scrOptions.AllowSystemObjects = $false #not include system object $scrOptions.IncludeDatabaseContext = $false #not include database infomation $scrOptions.IncludeIfNotExists = $true $scrOptions.ClusteredIndexes = $true $scrOptions.NoCollation = $true $scrOptions.Default = $true #$scrOptions.DriAll = $true $scrOptions.Indexes = $true $scrOptions.NonClusteredIndexes = $true $scrOptions.IncludeHeaders = $false $scrOptions.ToFileOnly = $true $scrOptions.Permissions = $true $scrOptions.ScriptDataCompression = $true $scrOptions.ScriptSchema = $true $scrOptions.AppendToFile = $true $sEnc = [System.Text.Encoding]::UTF8 $scrOptions.Encoding=$sEnc $scr.Options = $scrOptions if($whetherBackup -eq 1){ if (Test-Path -path $backupFolder){ remove-item $backupFolder\*.* -Recurse } } if($whetherReplace -eq 1){#remove replaceFolder before replace if (Test-Path -path $replaceFolder){ remove-item $replaceFolder\*.* -Recurse } } $WildCard=""; function getWildCard{ param($obj) $WildCard=""; foreach($element in $backupWildCard.split(';')) { $WildCard+="'"+$obj+"' -like '"+$element+"' -or " } $WildCard=$WildCard.substring(0,$WildCard.length-5) invoke-expression $WildCard } function ScriptDropStatement { param($object) $scrOptions.ScriptDrops = $true # drop statement of sql MakeDirectory($backupFolder); $scrOptions.FileName = $backupFolder+"\"+$object.Name+".sql"; $scr.Options = $scrOptions; $scr.Script($object); } function ScriptCreateStatement { param($object) $scrOptions.ScriptDrops = $false #create statement for sql MakeDirectory($backupFolder); $scrOptions.FileName = $backupFolder+"\"+$object.Name+".sql"; $scr.Options = $scrOptions; $scr.Script($object); } if($whetherBackup -eq 1){ #If want to backup ">>>>>Start Backup[Download] the Database Script !!!" $multiObject = $backupObject.split(";"); foreach($obj in $multiObject) { $tables=$db.Tables; if ($obj -eq 0 -or $obj -eq 1) { $srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.Table],"IsSystemObject") foreach ($table in $tables | where-object {getWildCard($_.name)} | where-object{$_.IsSystemObject -eq $false}) { MakeDirectory ($backupFolder); #ScriptDropStatement($table) ScriptCreateStatement($table) write-host "Table "$table.Name" backup Complete !" } } if ($obj -eq 0 -or $obj -eq 2) { $srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.Trigger],"IsSystemObject") foreach ($table in $tables) { foreach ($trigger in $Table.Triggers |where-object {getWildCard($_.name)} | where-object{$_.IsSystemObject -eq $false}) { MakeDirectory ($backupFolder); ScriptDropStatement($trigger) ScriptCreateStatement($trigger) write-host "Trigger "$trigger.Name" backup Complete !" } } } if ($obj -eq 0 -or $obj -eq 3) { $srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.View],"IsSystemObject") foreach ($view in $db.Views | where-object { getWildCard($_.name)} | where-object {$_.IsSystemObject -eq $false} ) { MakeDirectory ($backupFolder); #Check for folder, and create if needed ScriptDropStatement($view) ScriptCreateStatement($view) write-host "View "$view.Name" backup Complete !" } } if ($obj -eq 0 -or $obj -eq 4) { $srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.UserDefinedFunction],"IsSystemObject") foreach ($function in $db.UserDefinedFunctions | where-object {getWildCard($_.name)} | where-object {$_.IsSystemObject -eq $false}) { MakeDirectory ($backupFolder); #Check for folder, and create if needed ScriptDropStatement($function) ScriptCreateStatement($function) write-host "Function "$function.Name" backup Complete !" } } if ($obj -eq 0 -or $obj -eq 5) { $srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.StoredProcedure],"IsSystemObject") foreach ($procedure in $db.StoredProcedures | where-object {getWildCard($_.name)} | where-object{$_.IsSystemObject -eq $false}) { MakeDirectory ($backupFolder); #Check for folder, and create if needed ScriptDropStatement($procedure) ScriptCreateStatement($procedure) write-host "Stored Procedure "$procedure.Name" backup Complete !" } } } ">>>>>>>>Backup[Download] the Database Script Complete !!!" } if($whetherReplace -eq 1){#If want to replace ">>>>>>>>Start Replace The BackupFolder's Script !" if(!(Test-Path -path $backupFolder)){ write-host "Information: "$backupFolder" Directory not exist! Please Backup Before !" }else{ MakeDirectory($replaceFolder);#Check replaceFolder whether exist! $file=Get-ChildItem $backupFolder; if($oldChar -eq "" -and $newChar -eq "") { write-host "No replace necearray !" }else{ foreach($str in $file) { $backfileAddr=$backupFolder+"\"+$str; if(Test-Path -path $backfileAddr){ $replacefileAddr=$replaceFolder+"\"+$str; write-host $replacefileAddr; $content=Get-Content -path $backfileAddr -Encoding UTF8 $content | foreach-object {$_ -replace $oldChar,$newChar} | Set-Content $replacefileAddr -force -Encoding UTF8 }else{ write-host "file "$backfileAddr" can't found! So the replace Action can't work !" } } } } ">>>>>>Replace Script Complete !" } if($whetherRestore -eq 1){#If want to restore ">>>>>>>Start Restore Database !" if(!(Test-Path -path $replaceFolder)){ write-host "Information: "$replaceFolder "Directory not exist !please replace Before" }else{ foreach($f in get-childitem -path $replaceFolder -Filter *.sql | sort-object) { sqlcmd -i $f.fullname -S $restoreServer -U $restoreLogin -P $restorePassWord -d $restoreDataBase } } ">>>>>>>Restore DataBase Complete !" } if($whetherBackup -eq 0 -and $whetherReplace -eq 0 -and $whetherRestore -eq 0){ ">>>>>>You don't let progress do anything !<<<<<<" } }
同一目錄下的批處理文件run.bat:
cls powershell -command "&{set-executionpolicy RemoteSigned }" powershell -command "&{.\beta.ps1 Club.Secretary}"
- database.rar (3.5 KB)
- 下载次数: 2
发表评论
-
PowerDesigner连接数据库导出ER图
2012-06-28 18:16 3118PowerDesigner建立与数据库的连接,以便生成数 ... -
各类数据库中的SQL Profiler
2012-01-12 15:52 2002SQL Profiling and ... -
表变量与临时表
2011-12-27 09:51 910SQL Server中的临时表和表变量 ... -
sqlserver的换行问题
2011-09-20 20:29 1923制表符: CHAR(9) 换行符: CHAR(10) ... -
SQLServer脚本一键备份与还原(可配置文件及多通配符支持...)
2011-05-31 17:22 3043需求: 需要数据库中的对象(eg: Table 、 T ... -
在SQL Server中将数据库表结构及全部数据导成脚本
2011-05-20 15:24 1935当我们想将数据库搬到另一个环境中运行时,如 ... -
SMO+PowerShell 实现SQLServer数据库的备份与还原
2011-05-17 21:31 3436最近有需求,需要用脚 ... -
SQL中的DateAdd()
2011-04-18 22:04 3704MS SQL Server中DATEADD和DATEDIF ... -
一个表写给另一个表的情书!
2011-02-09 22:01 1159亲爱的Mrs TableMM: ... -
SQL Server datetime 常用日期格式转换
2010-12-20 20:59 1436我们经常出于某种目的需要使用各种各样的日期格式,当然我们可以使 ... -
SQL Server 2005启用sa账号
2010-11-11 09:35 1274... -
PIVOT初接触
2010-10-28 20:33 1069以前一直没接触过PIVOT这个概念!当接触时,赶紧查了下资料如 ... -
常用函数
2010-10-28 15:40 926SQL函数 left()、charindex()的使用 ... -
关于SQL中自动增长列值回复(还原)的问题
2010-10-23 14:13 4388大家都知道,只要有新加记录,SQL中自动增长字段的值总是自动 ... -
数据库中涉及到的几种连接方式
2010-10-14 19:43 1216通俗的讲: A left join B ...
相关推荐
标题 "SMO+PowerShell 实现SQLServer数据库的备份与还原" 涉及到的是在SQL Server环境中,使用SQL Server Management Objects (SMO) 和 PowerShell脚本来自动化数据库的备份和恢复过程。这是一种高效且灵活的方法,...
在IT领域,数据库管理是至关重要的任务之一,SQL(Structured Query Language)作为最广泛使用的数据库语言,其数据库的备份与还原功能是确保数据安全和业务连续性的重要手段。本篇文章将详细探讨SQL数据库的备份与...
5. `Lb.BackDb`:这个名字暗示这可能是核心的数据库备份模块,包含了与数据库交互的逻辑,比如连接数据库、执行备份脚本等功能。 综合以上信息,我们可以推断这个项目包括一个C#编写的Windows服务程序,用于自动...
在本主题中,我们将深入探讨如何在Windows环境中利用脚本实现数据库的自动备份,特别是与MySQL数据库相关的操作。"数据库备份脚本.zip"文件包含了一个适用于Windows的任务计划器脚本,用于定期执行MySQL数据库的备份...
数据库备份与恢复是数据库管理中的核心任务,它确保在数据丢失或系统故障时能够恢复到安全的状态。在中山大学计算机学院的《数据库系统原理实验》中,实验13重点介绍了如何针对教学管理系统进行这一过程。以下是对...
标题"PowerShell生成数据库脚本.zip"暗示了主要内容是关于使用PowerShell编写脚本来创建SQL Server数据库的备份或迁移方案。在SQL Server环境中,我们经常需要导出数据库的结构(如表、视图、存储过程等)或者数据,...
是的,它可以备份Plex数据库,但是如果您需要将Plex实例移至其他系统或在硬盘崩溃后将其还原,则单个数据库备份文件几乎没有用。 为了进行有意义的备份,除了Plex数据库之外,您还需要Plex Windows注册表项的副本...
- PowerShell脚本:通过编写PowerShell脚本,结合SQL Server的SMO(SQL Server Management Objects)库,实现数据库的自动备份。 - 批处理命令:结合SQL Server的T-SQL备份命令,可以通过Windows的计划任务来定时...
参数含义与备份命令类似,但需要注意的是: - `<Site collection URL>` 是你要恢复的网站集的URL。 - `-DatabaseServer` 和 `-DatabaseName` 分别指备份文件中网站集关联的数据库服务器名称和内容数据库名。 例如...
这在数据库迁移、硬件升级或数据库的临时移除与恢复中十分有用。使用`ALTER DATABASE ATTACH`命令,配合合适的脚本,可以快速地处理大量数据库的附加操作。 在实际应用中,**用友**是一款常见的企业资源规划(ERP)...
### SQL Server 与 PowerShell:提升数据库管理效率 #### 核心知识点概述 1. **SQL Server 2012 特性与应用** - SQL Server 2012 的新特性及其对数据库管理和开发的影响。 - 如何利用 SQL Server 2012 提升数据...
2. **选择数据库**:在对象资源管理器中找到需要还原的备份文件。 3. **执行还原**:右键点击备份文件,选择“任务” -> “还原”。 ##### 3.3 还原网站集 **通过管理中心还原网站集** 1. **选择网站集**:在...
本文将详细探讨备份、还原和移动 SharePoint 网站的几种方法,帮助管理员确保数据的完整性和业务连续性。 1. **SharePoint 内置备份功能** - SharePoint 提供了内置的备份工具,允许管理员执行网站集级别的备份。...
# Purpose: Windows平台下采用PowerShell使用rman自动备份oracle并上传备份到ftp,并根据日期自动保留所需备份 # Created: 2015/8/12 $env:ORACLE_SID=orcl $env:NLS_LANG=AMERICAN_AMERICA.AL32UTF8 $NOWDATE=Get-...
解决nginx在windows下日志定期备份问题的powershell脚本,文件名为前一天的日期。无需任何第三方程序。
【powershell脚本】链接sqlserver数据库执行增删查改
在SQL Server数据库管理中,确保数据的安全性和可用性至关重要,其中自动备份和定期删除策略是两个重要的环节。本文将详细阐述SQL Server中如何配置数据库自动备份以及设置定期删除的步骤,帮助管理员有效管理数据库...
在SQL Server环境中,数据库自动备份是确保数据安全性和业务连续性的重要环节。本文将深入探讨如何实现SQL Server数据库的自动备份,以及相关的知识点。 首先,理解SQL Server的备份类型至关重要。主要有完整备份、...
在深入学习章节,书中涵盖了PowerShell的高级特性和使用技巧,如脚本编写、函数创建、模块开发、错误处理、调试工具以及与其他系统工具的集成。通过这些内容,读者可以掌握如何构建复杂的自动化解决方案,提高工作...