gpt4 book ai didi

sql-server - 使用 Powershell 从 SQL Server 2008 获取数据

转载 作者:行者123 更新时间:2023-12-04 01:08:06 24 4
gpt4 key购买 nike

我在从 SQL Server 中的简单存储过程中获取数据时遇到了一些困难。我有一个 Powershell 脚本,需要从 3 列中获取变量(该过程只返回 1 行)

这是我所拥有的但不起作用的东西。不知何故,我没有正确引用列值。我尝试了各种方法,但通常会收到错误“无法索引到空数组”。我不想遍历结果集,我只想直接从返回的一行中设置一些值到变量中

$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
$conn.ConnectionString = `
"Server=ServerName;Database=ShopDB;Integrated Security=True"
$sqlQuery = new-object System.Collections.Specialized.StringCollection
$sqlQuery.Add("JobSettingsGet")
$Resultset = $conn.ExecuteWithResults($sqlQuery)

# $UserName = $table.Rows(0).Columns(0)
# error - Method invocation failed because [System.Data.DataTable] doesn't
# contain a method named 'Rows'.
# $UserName = $table.Rows[0].Columns[0]
# error - cannot index null array
# $UserName = $table.Row(0).Column(0)
# error - Cannot index into a null array, also Method invocation failed
# because [System.Data.DataTable] doesn't contain a method named 'Row'.
# $UserName = $table.Rows[0].Columns[1].Value
# error - cannot index null array

如果可能,我也想使用列名。

有什么指点吗?

谢谢,西尔维娅

最佳答案

您可以使用 System.Data.SqlClient.SqlConnection 而不是 SqlServer.Management

$conn = New-Object Data.Sqlclient.Sqlconnection`
("Data Source=DATABASE;Initial Catalog=master;Integrated Security=SSPI;")
$adapter = New-Object Data.Sqlclient.Sqldataadapter("exec sp_who2", $conn)
$set = new-object data.dataset
$adapter.fill($set)
$table = new-object data.datatable
$table = $set.tables[0]

为了打印整个表格,只需使用format-table

$table | ft -AutoSize

要按名称获取列,请使用 foreach 迭代器并按名称访问注释属性

$table | % {$_.login}

Ed:这是使用 SqlServer.Management 进行的相同查询。

[void][Reflection.Assembly]::LoadWithPartialName`
("Microsoft.SqlServer.ConnectionInfo")
$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
$conn.ConnectionString = `
"Server=ServerName;Database=ShopDB;Integrated Security=True"
$sqlQuery = new-object System.Collections.Specialized.StringCollection
$sqlQuery.Add("exec sp_who2")
$resultset = $conn.ExecuteWithResults($sqlQuery)

通过按名称选择第零个结果集、第零个表、第零个行和项目来访问结果

$resultset[0].tables.Item(0).Rows[0].Item("Login")

关于sql-server - 使用 Powershell 从 SQL Server 2008 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com