转至:http://www.pstips.net/connect-sql-database.html
PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本。工作中整理的一小段脚本,后来没有用上,先记录在这里:
- 建立数据库连接
- 查询返回一个DataTatble对象
- 执行一条SQL语句
- 通过事物执行多条SQL语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# # 建立数据库连接. # 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()
}
} |