使用 Powershell 从 sql 表中获取值

Jeg*_*n.M 6 windows sql-server powershell

我们知道我们可以使用 sql 查询窗口从数据库中获取值,例如“ select * from....”。有没有办法通过powershell方式获得价值。我找到了数据库表本身的方法,但没有找到值。

前任:

Set-location SQLserver:\sql\default\localhost\databases\database\tablesGet-childitem 
Run Code Online (Sandbox Code Playgroud)

上面的命令为我提供了数据库中的表,但我如何从中获取值。

小智 8

你可以用这个

$connectionString = “Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;”

$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString

$connection.Open()
$query = “SELECT * FROM Tab”

$command = $connection.CreateCommand()
$command.CommandText = $query

$result = $command.ExecuteReader()
Run Code Online (Sandbox Code Playgroud)


Bre*_*ent 8

最简洁直接的选项是Invoke-SqlCommand

$results = Invoke-Sqlcmd -ServerInstance "mySqlServer" -Database "myDatabase" -Query "SELECT * FROM MyTable"
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 5

SQL Server Powershell 提供程序使用 SMO 来公开数据库对象层次结构。获得 SMO 子项后,您可以调用该对象上的相应 SMO 方法。

SMO 数据库 ExecuteQueryWithResults 方法可用于在给定数据库的上下文中执行查询。获取所需的数据库项并调用此方法以返回包含结果的 DataSet 对象。然后根据需要从 DataSet 中检索数据。

下面是从 SMO 参考 (( https://msdn.microsoft.com/en-us/library/ms205775.aspx ) 中收集的一个示例,可以从数据库节点的上下文中运行:

$db = Get-Item SomeDatabase
$dt = $db.ExecuteWithResults("SELECT * FROM sys.objects;")
$dt.Tables[0] | Format-Table
Run Code Online (Sandbox Code Playgroud)