首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >powershell入门帮助-重写旧的BAT + SQL文件

powershell入门帮助-重写旧的BAT + SQL文件
EN

Stack Overflow用户
提问于 2009-11-11 04:44:19
回答 2查看 1.2K关注 0票数 1

我对powershell完全陌生,我需要一些帮助才能开始。我需要的是写一个备份SQL数据库的小脚本,但每次都有不同的名称(只保留最近的4-5个版本)。现在我有一个BAT,它只使用sql脚本启动osql,如下所示

代码语言:javascript
代码运行次数:0
运行
复制
REM BAT file starts here
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe" -S myServer -E -iC:\Scripts\backupDB.sql

备份脚本是

代码语言:javascript
代码运行次数:0
运行
复制
BACKUP DATABASE [MyDB] TO  DISK = N'C:\Backup\MyDB.bak' WITH NOFORMAT, INIT,  NAME = N'MyDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

此BAT由任务调度程序运行。显然,它不会创建不同的数据库备份文件。我想要的是用powershell脚本替换整个东西,它将在目标目录中查找并只保留最后N个备份文件(从最新的开始),然后生成一个备份文件名,如下所示

代码语言:javascript
代码运行次数:0
运行
复制
MyDB-yy.mmdd.hhmmss.bak 

和备份在那里。

我可以创建一个简单的C#控制台应用程序来做到这一点,但我想开始使用Powershell进行测试。

任何帮助都是非常感谢的。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-11 08:07:26

像这样的东西应该是有效的:

代码语言:javascript
代码运行次数:0
运行
复制
if (Test-Path C:\Backup\MyDB.bak)
{
    Rename-Item C:\Backup\MyDB.bak `
                ("C:\Backup\MyDB-{0:yy.MMdd.hhmmss}.bak" -f (get-date))
}

Get-ChildItem C:\Backup\MyDB-*.bak | Sort Name -Desc | Select -skip 5 | 
    Remove-Item

$osql = "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe"
& $osql -S myServer -E -iC:\Scripts\backupDB.sql
票数 2
EN

Stack Overflow用户

发布于 2009-11-12 02:50:45

或者,您可以跳过.sql文件,执行以下操作。也可以使用SMO来完成,但是既然您提到了C#,这对您来说可能更有意义。

代码语言:javascript
代码运行次数:0
运行
复制
$datePart = Get-Date -Format "yy.MMdd.HHmmss"
$oConn = New-Object System.Data.SqlClient.SqlConnection("Server=myServer;Database=master;Integrated Security=True")
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $oConn
$oConn.Open()
$SqlCmd.CommandText = "BACKUP DATABASE [MyDB] TO  DISK = N'C:\Backup\MyDB-$datePart.bak' WITH NOFORMAT, INIT,  NAME = N'MyDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10"
$SqlCmd.ExecuteNonQuery()
$oConn.Close()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1711053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档