批量執行SQL指令檔

來源:互聯網
上載者:User
用Windows PowerShell  批量執行SQL指令檔 小工具
 
<#批量執行SQL指令檔#><#===========================================#>$serverInstance="114.80.119.202" $userName="sa"$password="****"$ScriptPath="D:\work\config\張志明\2012-2-21\"$ScriptPathError="D:\work\doc\SQL Server Management Studio\Projects\20120220\"$ScriptList=""#格式化文本  轉成unicode$path=$ScriptPath$items=Get-ChildItem $path -Recurse -Force -Include *.sqlforeach ($item in $items){$path=Join-Path $item.Directory $item.name$content=get-content $pathRemove-Item  $path$content |out-file -filepath $path -encoding Unicode}<#===========================================#>$n="`n"$r="`r"While ($ScriptList.IndexOf($n) -gt 0)    {$ScriptList=$ScriptList.Replace($n,";")}While ($ScriptList.IndexOf($r) -gt 0)    {$ScriptList=$ScriptList.Replace($r,";")}    While ($ScriptList.IndexOf(" ") -gt 0)        {$ScriptList=$ScriptList.Replace(" ","")}While ($ScriptList.IndexOf(",") -gt 0)        {$ScriptList=$ScriptList.Replace(",","")}If ($ScriptList.IndexOf(".sql") –le 0){    $ScriptList=""    [System.IO.DirectoryInfo]$DirectoryInfo=New-Object System.IO.DirectoryInfo $ScriptPath | Sort-Object    foreach( $f In ($DirectoryInfo.GetFiles("*.sql")))     {        $ScriptList=$ScriptList+";"+$f.Name    }}Try{    [void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.ConnectionInfo') |out-null    $ServerConnection =new-object Microsoft.SqlServer.Management.Common.ServerConnection $serverInstance,$userName, $password    try    {        $ServerConnection.BeginTransaction()        Write-Host "BeginTransaction ."                [System.Text.StringBuilder]$Sql=""        Foreach($File In $ScriptList.Split(";"))        {                    if($File -ne "")            {                $Sql=$Sql.AppendLine(([System.Io.File]::OpenText($ScriptPath+$File)).ReadToEnd())                 $ServerConnection.ExecuteNonQuery($Sql)|out-null                $Sql=""                                Write-Host $ScriptPath$File  " ...OK!"            }        }        $ServerConnection.CommitTransaction()                Write-Host "CommitTransaction ."          }    Catch    {        If ($ServerConnection.TransactionDepth -gt 0)            {                $ServerConnection.RollBackTransaction()                Write-Host "RollBackTransaction ."            }                             Write-Error $_          Write-Host $ScriptPath$File  " ...執行失敗!"         Move-Item -Path $ScriptPath$File -Destination $ScriptPathError -PassThru –Force       }    }Catch{    Write-Error $_   }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.