Sql server 如何使用powershell运行sql脚本?
我想使用powershell运行sql脚本,但出现了一个错误“术语‘Invoke sqlcmd’无法识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查 请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。“ 我从一些网站上找到了下面的代码段。但是这只是一个sql命令。但是我想运行一个sql脚本 请有人帮我修改下面的sql脚本或其他更好的建议好吗Sql server 如何使用powershell运行sql脚本?,sql-server,sql-server-2008,powershell,powershell-2.0,powershell-3.0,Sql Server,Sql Server 2008,Powershell,Powershell 2.0,Powershell 3.0,我想使用powershell运行sql脚本,但出现了一个错误“术语‘Invoke sqlcmd’无法识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查 请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。“ 我从一些网站上找到了下面的代码段。但是这只是一个sql命令。但是我想运行一个sql脚本 请有人帮我修改下面的sql脚本或其他更好的建议好吗 SQLServer = "ABCD\ABC" $SQLDBName = "ABC_1223" $SqlQ
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]
您可以按原样使用代码,只需将SQL脚本放入一个Here字符串(字符串文字)。此外,我会将对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()
}
要使用invoke-sqlcmd,必须导入sqlps模块@大卫·布拉班特,你能帮我完成这件事吗?你有什么办法吗?另外,您可以看到我们可以对上述脚本进行任何修改吗?您好@nimizen,非常感谢您在这方面的帮助。我的要求是在不调用的情况下使用powershell运行sql脚本abcd.sql,并且上面的代码几乎与我为sql查询编写的代码相似。对脚本而不是查询有任何进一步的建议吗?