Here is a PowerShell script that uses SQL Server Management Objects (SMO) to do this task:
(note that I load the assemblies with version 10.0.0 which is the version of SQL server 2008 I have installed on my system)
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")
$con = New-Object Microsoft.SqlServer.Management.Common.ServerConnection
$con.ConnectionString="Data Source=.\SQLExpress;Integrated Security=SSPI;"
$con.Connect()
$srv = New-Object Microsoft.SqlServer.Management.Smo.Server $con
$db = $srv.Databases["test"]
foreach ($table in $db.Tables)
{
  if($table.IsSystemObject)
  { 
      continue
  }
   
  foreach($column in $table.Columns)
  {
      if(-not ([string]::IsNullOrEmpty($column.Collation)))
      {
          $column.Collation = "Arabic_CS_AS"
          $column.Alter()
      }
  }
}
$con.Disconnect()
 
 
No comments:
Post a Comment