PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本。工作中整理的一小段脚本,后来没有用上,先记录在这里:
- 建立数据库连接
- 查询返回一个DataTatble对象
- 执行一条SQL语句
- 通过事物执行多条SQL语句
#
# 建立数据库连接.
#
function New-SqlConnection([string]$connectionStr)
{
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = $connectionStr
try{
$SqlConnection.Open()
Write-Host 'Connected to sql server.'
return $SqlConnection
}
catch [exception] {
Write-Warning ('Connect to database failed with error message:{0}' -f ,$_)
$SqlConnection.Dispose()
return $null
}
}
#
# 查询返回一个DataTable对象
#
function Get-SqlDataTable
{
param
(
[System.Data.SqlClient.SqlConnection]$SqlConnection,
[string]$query
)
$dataSet = new-object "System.Data.DataSet" "WrestlersDataset"
$dataAdapter = new-object "System.Data.SqlClient.SqlDataAdapter" ($query,$SqlConnection)
$dataAdapter.Fill($dataSet) | Out-Null
return $dataSet.Tables | select -First 1
}
#
# 执行一条SQL命令
#
function Execute-SqlCommandNonQuery
{
param
(
[System.Data.SqlClient.SqlConnection]$SqlConnection,
[string]$Command
)
$cmd = $SqlConnection.CreateCommand()
try
{
$cmd.CommandText = $Command
$cmd.ExecuteNonQuery() | Out-Null
return $true
}
catch [Exception] {
Write-Warning ('Execute Sql command failed with error message:{0}' -f $_)
return $false
}
finally{
$SqlConnection.Close()
}
}
#
# 通过事物处理执行多条SQL命令
#
function Execute-SqlCommandsNonQuery
{
param
(
[System.Data.SqlClient.SqlConnection]$SqlConnection,
[string[]]$Commands
)
$transaction = $SqlConnection.BeginTransaction()
$command = $SqlConnection.CreateCommand()
$command.Transaction = $transaction
try
{
foreach($cmd in $Commands) {
#Write-Host $cmd -ForegroundColor Blue
$command.CommandText = $cmd
$command.ExecuteNonQuery()
}
$transaction.Commit()
return $true
}
catch [Exception] {
$transaction.Rollback()
Write-Warning ('Execute Sql commands failed with error message:{0}' -f $_)
return $false
}
finally{
$SqlConnection.Close()
}
}
本文链接: https://www.pstips.net/connect-sql-database.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

如果我需要对sql进行操作的话,首先需要执行New-SqlConnection,建立sql连接, 然后才能使用Get-SqlDataTable 和 Execute-SqlCommandNonQuery 之类的操作?
对