【问题标题】:How to run sql script using powershell?如何使用 powershell 运行 sql 脚本?
【发布时间】:2014-10-11 05:30:36
【问题描述】:

我想使用 powershell 运行 sql 脚本,但出现错误“‘Invoke-sqlcmd’一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查 t 名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。"

我从某个网站找到了下面的 sn-p。但这仅适用于一个 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]

【问题讨论】:

标签: sql-server sql-server-2008 powershell powershell-2.0 powershell-3.0


【解决方案1】:

您可以按原样使用您的代码,只需将您的 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()
}

【讨论】:

  • HI @nimizen ,非常感谢您在此方面的帮助。我的要求是使用 powershell 运行 sql 脚本 abcd.sql 而无需调用,上面的代码几乎类似于我为 sql 查询编写的代码..对脚本而不是查询的任何进一步建议?
猜你喜欢
  • 1970-01-01
  • 2014-09-01
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多