如果我执行以下操作,
PS > $a = Invoke-Sqlcmd -ServerInstance <blah> -Database <blah> -Query "SELECT <blah>"(其中只是有效内容的占位符)
则返回的类型如下所示:
PS > $a.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array 理想情况下,我希望将$a传递给一个接受System.Data.DataSet (或类似形式)形式的.NET类型的函数。
关于详细信息,我使用了查德·米勒的SQLPS模块,它封装了Windows7下PowerShell 2上早期SQL server (SQL Server2008)的官方MS发行版。
我怀疑这可能与装箱和拆箱有关,但我不清楚。
有没有办法将查询结果作为System.Data.DataSet类型返回?
发布于 2016-11-28 23:39:58
从2016年7月的sqlps版本开始,您可以简单地执行以下操作:
Invoke-Sqlcmd "select 1 as foo" -OutputAs DataTables好东西!
发布于 2013-02-05 01:20:19
这是一种不使用invoke-sqlcmd返回dataset类型的方法(找不到方法...)
$sql="SELECT <blah> FROM <dbo.blah>"
$connectionstring= "Server='myblahserver';database='blah';trusted_connection=yes;"
$ds = new-object data.dataset
$da = New-Object system.data.sqlclient.sqldataadapter $sql, $connectionstring
$null = $da.Fill($ds)
$ds.ExtendedProperties["sql"]= $sql
$ds.ExtendedProperties["connectionstring"]= $connectionstring
$ds发布于 2015-10-09 09:00:38
我找到的唯一方法是使用这里提供的代码创建一个将数组转换为数据表的函数:
https://gallery.technet.microsoft.com/scriptcenter/4208a159-a52e-4b99-83d4-8048468d29dd
加载此函数后,您可以获取invoke-sqlcmd的结果,并将其通过管道传递到函数中:
$results = Invoke-Sqlcmd -inputfile $scriptpath -ServerInstance $instance
$dt = $results | Out-Datatablehttps://stackoverflow.com/questions/14687289
复制相似问题