October 10, 2012 at 2:56 pm
Has anyone found a way to graph SQL Server data from a PowerShell script?
This link describes something close to what I hope to do:
http://blogs.technet.com/b/richard_macdonald/archive/2009/04/28/3231887.aspx
However, I would like to replace the functionality of his code:
Now for some data to display:
# add data to chart
$Cities = @{London=7556900; Berlin=3429900; Madrid=3213271; Rome=2726539;
Paris=2188500}
[void]$Chart.Series.Add("Data")
$Chart.Series["Data"].Points.DataBindXY($Cities.Keys, $Cities.Values)
with the output from a SQL Server query similar to this:
[array]$SQLOutput_STR = sqlcmd.exe -S my_server\my_instance -E -Q "select x, y from my_table;"
My query should return data like:
X Y
- -
1 9
3 4
5 7
8 3
0 4
Instead of creating a bar chart, I would prefer to create a line chart.
Any ideas?
October 11, 2012 at 1:37 pm
I found this link (http://poshcode.org/1205) which works fine for charting get-process information (despite a couple of typos in the script). But I am not having any luck "trading" sqlcmd.exe output for get-process output. Apparently, get-process returns its data as a PowerShell object, but sqlcmd.exe does not.
Any ideas on how to return the results of a SQL query as a PowerShell object?
October 11, 2012 at 7:42 pm
shew (10/11/2012)
Any ideas on how to return the results of a SQL query as a PowerShell object?
I'm no Powershell Ninja by any means so I don't know the Powershell answer to this but I'm sure this is one. In the meantime, couldn't you just BCP the results out to a file using SQLCMD and open the file in Powershell?
By the same token, I'm not sure that PowerShell is the answer here. Why not create a spreadsheet that looks at external data through a pass-through view and plot from that?
--Jeff Moden
Change is inevitable... Change for the better is not.
October 12, 2012 at 5:46 am
Jeff,
Thanks for the feedback.
couldn't you just BCP the results out to a file using SQLCMD and open the file in Powershell?
From a PowerShell perspective, I think that character-based (not native-based) BCP output would generate the same type of "text" file as:
sqlcmd.exe -S ... -E -Q "select X, Y from my_table"
I'm thinking BCP and sqlcmd are probably a wash.
By the same token, I'm not sure that PowerShell is the answer here. Why not create a spreadsheet that looks at external data through a pass-through view and plot from that?
I'm trying to remove all Microsoft Office installation aspects from this project. We are a locked down shop which does not allow Office to be installed on its servers, and I would like to be able to graph data while logged onto remote servers that may be accessible only through a VPN. So, the native graphing ability of PowerShell (i.e., Microsoft Chart Controls for the .NET Framework, which is oddly part of our base install) is attractive.
I originally thought that sqlcmd.exe was not returning its results in an object, but I was mistaken.
The http://poshcode.org/1205 link for LibraryChart.ps1 that I cited above is the closest I've found for graphing data from the PowerShell command line. However, it relies on the use of a PowerShell hash table to feed its data to the Microsoft Chart Controls. The PowerShell "get-process" command returns SystemArray output that is compatible with LibraryChart.ps1 and its use of a hash table, but sqlcmd.exe returns a SystemArray that does not appear to be compatible with the script. I'm thinking there is a way to pipe the sqlcmd.exe output to make it more similar to the "get-process" output, but I have not found it yet.
October 12, 2012 at 7:15 am
You do't need to have MS Office installed on the server to do what I suggest. You would use the spreadsheet from your (or a user's) desktop as if it were a 3rd party app (which it is) to access "External Data" and plot it.
--Jeff Moden
Change is inevitable... Change for the better is not.
October 12, 2012 at 5:35 pm
Jeff Moden (10/12/2012)
You do't need to have MS Office installed on the server to do what I suggest. You would use the spreadsheet from your (or a user's) desktop as if it were a 3rd party app (which it is) to access "External Data" and plot it.
Thanks, Jeff.
I think understood what you meant. In certain circumstances, we already do what you suggest.
However, we are a hosting facility with scores of VLANs and VPNs, and we do not necessarily allow firewall connections to reach the remote data. I need something that works totally on the remote server, without any dependencies on my local desktop.
October 21, 2012 at 6:18 pm
shew (10/12/2012)
Jeff Moden (10/12/2012)
You do't need to have MS Office installed on the server to do what I suggest. You would use the spreadsheet from your (or a user's) desktop as if it were a 3rd party app (which it is) to access "External Data" and plot it.Thanks, Jeff.
I think understood what you meant. In certain circumstances, we already do what you suggest.
However, we are a hosting facility with scores of VLANs and VPNs, and we do not necessarily allow firewall connections to reach the remote data. I need something that works totally on the remote server, without any dependencies on my local desktop.
Sorry for the late reply. Maybe SSRS?
--Jeff Moden
Change is inevitable... Change for the better is not.
Viewing 7 posts - 1 through 7 (of 7 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy