use*_*017 5 sql-server powershell powershell-2.0 sql-server-2008 powershell-3.0
我想使用 powershell 运行 sql 脚本,但收到错误“术语‘Invoke-sqlcmd’未被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者包含路径,请验证路径是否正确,然后重试。”
我从某个网站找到了以下代码段。但这仅适用于一个 sql 命令。但我想运行一个 sql 脚本。
有人可以帮忙修改下面的 sql 脚本或任何更好的建议吗?
SQLServer = "ABCD\ABC"
$SQLDBName = "ABC_1223"
$SqlQuery = "select * from table"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database =$SQLDBName;uid=$SQLDBName;pwd= $pwd; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
clear
$DataSet.Tables[0]
Run Code Online (Sandbox Code Playgroud)
您可以按原样使用您的代码,只需将您的 SQL 脚本放在一个 Here-String(字符串文字)中。此外,我会将对 SQL 数据库的调用包装在 Try/Catch/Finally 构造中,以确保您的连接已关闭和处理。最后,考虑在您的连接字符串中使用应用程序名称来为您的 DBA 提供有关您的连接与什么相关的线索。把它放在一起:
Try{
$SQLServer = "ABCD\ABC"
$SQLDBName = "ABC_1223"
#This is the here-string
$SqlQuery = @"
select * from table
where we can select stuff
and filter it
and join
etc
"@
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database =$SQLDBName;Application Name = 'user2075017_db_call';uid=$SQLDBName;pwd= $pwd; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$DataSet.Tables[0]
}
Catch{
}
Finally{
$SqlConnection.Close()
$SqlConnection.Dispose()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7429 次 |
| 最近记录: |