Welcome to MSDN Blogs Sign in | Join | Help

SQL Powershell - Unrestrict Growth size on all Database Files that has AutoGrowth set as None

###########################################################################################
# Scenario: Unrestrict Growth size on all Database Files that has AutoGrowth set as None
# The following SQL 2008 Powershell sample code enumerates all  user database data files and sets Autogrowth by 10%
#
#  How to use this powershell script:
#    - Launch SQL Server Management  Studio ( Start -> All Programs -> Microsoft SQL Server 2008 -> SQL Server Management Studio)
#    - Connect to SQL Server instance, Right click on the server node in Object Explorer and click on "Start Power Shell" menu
#    - Copy the following powershell script and paste it in "SQL Server PowerShell command window
###########################################################################################

# Gets the list of files, Growth types for all databases
function GetFileInfoList
()
{
        $fileInfoList = @
()
       
#get list of databases on this sql instance
        $userDatabaseList = dir Databases

       
#enumerate list of databases
        foreach($db in $userDatabaseList
)
       
{
                $fileGroupPSPath = "Databases\" + $db.Name +
"\FileGroups"
                pushd
$fileGroupPSPath
               
               
# Get list of FileGroups for this database
                $fileGroupCollection = (get-item .).Collection
               
                foreach($fileGroup in $fileGroupCollection)     
               
{
                        $filesPSPath = ".\" + $fileGroup.Name +
"\Files"
                        pushd $filesPSPath
                       
                       
# get list of files
                        $fileList = (get-item .).Collection
                       
                        foreach($file in $fileList )   
                       
{
                                $fileInfoList +=
$file
                       
}
                       
popd
               
}
               
popd
       
}
        $fileInfoList
;
}


# Set GrowthType
function SetFileGrowthType($fileList, $GrowthType = [Microsoft.SqlServer.Management.Smo.FileGrowthType]::Percent , $Growth=10
)
{
        $fileListWithSpecificGrowthType = $fileList   | where-object { $_.GrowthType -eq [Microsoft.SqlServer.Management.Smo.FileGrowthType]::None
}

       
# enumerate files with no growth type
        foreach($fileWithNoGrowthType in $fileListWithSpecificGrowthType  )     
       
{
                if( $fileWithNoGrowthType -ne $null
)
               
{
                        $fileWithNoGrowthType.GrowthType =
$GrowthType
                        $fileWithNoGrowthType.Growth =
$Growth
               
                        write-host "Updating file:" ,  $fileWithNoGrowthType.Name
                        write-host "GrowthType:" ,  $GrowthType
                        write-host "Growth:" ,  $Growth
                       
                        $fileWithNoGrowthType.Alter
()
               
}
       
}
}

$fileList = GetFileInfoList

$fileList  | select-object Name, GrowthType,Growth

SetFileGrowthType($fileList )


 

#This posting is provided "AS IS" with no warranties, and confers no rights.
#Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm

Published Thursday, June 12, 2008 7:17 PM by Sethu Srinivasan

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker