I am currently playing around with ConfigMgr 2012 cmdlets… and they only run in X86 (*doh*).
Anyway, I need to query a database with information about some collections and other stuff I need to create… and running SQL Server cmdlets in X86 doesn’t work.
So to get this to work I found a Powershell function that uses SqlClient from .NET instead… I rewrote the function a bit and here is the result:
Function Run-SqlQuery { PARAM( [string] $Server = ".", [string] $Database = "master", [string] $Query, [Int32] $QueryTimeout=60 ) $sqlConnection = New-Object System.Data.SqlClient.SQLConnection $sqlConnection.ConnectionString = "Data Source=$($Server);Initial Catalog=$($Database);Integrated Security=True;" $sqlConnection.Open() $sqlCommand = New-Object System.Data.SqlClient.SqlCommand($Query,$sqlConnection) $sqlCommand.CommandTimeout = $QueryTimeout $sqlDataSet = New-Object System.Data.DataSet $sqlDataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($sqlCommand) [void]$sqlDataAdapter.fill($sqlDataSet) $sqlConnection.Close() return $sqlDataSet.Tables[0] }
Then you can use it like this:
Run-SqlQuery -Query "EXEC SP_HelpDB" Run-SqlQuery -Query "SELECT Col1, Col2 FROM MyTable" -Database "MyDatabase" -Server "SomeServer" | Format-Table -AutoSize
This can probably be useful if you need to run a SQL command from a box where your’e not sure if you have SQL cmlets or not.