首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell Invoke-Sqlcmd -不返回DataTable或DataSet

PowerShell Invoke-Sqlcmd -不返回DataTable或DataSet
EN

Stack Overflow用户
提问于 2013-02-04 20:58:22
回答 3查看 5.6K关注 0票数 2

如果我执行以下操作,

代码语言:javascript
复制
PS > $a = Invoke-Sqlcmd -ServerInstance <blah> -Database <blah> -Query "SELECT <blah>"

(其中只是有效内容的占位符)

则返回的类型如下所示:

代码语言:javascript
复制
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类型返回?

EN

回答 3

Stack Overflow用户

发布于 2016-11-28 23:39:58

从2016年7月的sqlps版本开始,您可以简单地执行以下操作:

代码语言:javascript
复制
Invoke-Sqlcmd "select 1 as foo" -OutputAs DataTables

好东西!

票数 3
EN

Stack Overflow用户

发布于 2013-02-05 01:20:19

这是一种不使用invoke-sqlcmd返回dataset类型的方法(找不到方法...)

代码语言:javascript
复制
$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
票数 1
EN

Stack Overflow用户

发布于 2015-10-09 09:00:38

我找到的唯一方法是使用这里提供的代码创建一个将数组转换为数据表的函数:

https://gallery.technet.microsoft.com/scriptcenter/4208a159-a52e-4b99-83d4-8048468d29dd

加载此函数后,您可以获取invoke-sqlcmd的结果,并将其通过管道传递到函数中:

代码语言:javascript
复制
$results = Invoke-Sqlcmd -inputfile $scriptpath -ServerInstance $instance
$dt = $results | Out-Datatable
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14687289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档