转至: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()
}
}
|