Quantcast
Viewing all articles
Browse latest Browse all 21975

Handling plan_handle with varbinary data type in PowerShell

Hi,

I have a problem handling a varbinary column in PowerShell.

I am reading up some plan handles into a dataset. The plan_handle is varbinary(64) in SQL Server. Then I am trying to call a function in SQL Server for each plan handle.

  $SqlTargetConnection.Open()
   $SqlCmdPlanHandlesGet = New-Object System.Data.SqlClient.SqlCommand("SELECT plan_handle FROM dbo.QueryPlans",$SqlTargetConnection)
   $SqlCmdPlanHandlesGet.CommandTimeout = 30
   $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($SqlCmdPlanHandlesGet)
   $DataSet = New-Object System.Data.DataSet
   $SqlAdapter.Fill($DataSet)
   $SqlTargetConnection.Close()

  $DataTable = new-object "System.Data.DataTable"
  $DataTable = $DataSet.Tables[0]

  #Add new columns
   $ColumnQueryPlan = New-Object System.Data.DataColumn query_plan,([string])
   $DataSet.Tables[0].Columns.Add($ColumnQueryPlan)
   
   foreach ($Plan in $DataSet.Tables[0])
   {
     $plan_handle = $Plan["plan_handle"]
     $SqlSourceConnection.Open()
     $SqlCmdQueryPlanGet = New-Object System.Data.SqlClient.SqlCommand("SELECT query_plan FROM sys.dm_exec_query_plan($plan_handle)",$SqlSourceConnection)
     $SqlCmdQueryPlanGet.CommandTimeout = 30
     $QueryPlan = $SqlCmdQueryPlanGet.ExecuteScalar()
     $SqlSourceConnection.Close()
   }

I get this error:

Exception calling "ExecuteScalar" with "0" argument(s): "Incorrect syntax near '0'."
At char:51 + $QueryPlan = $SqlCmdQueryPlanGet.ExecuteScalar( <<<< )

I think that the problem is related to the data type of the plan_handle. All feedback is greatly appreciated.

Ola Hallengren
http://ola.hallengren.com



Viewing all articles
Browse latest Browse all 21975

Trending Articles