Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用powershell运行sql脚本?_Sql Server_Sql Server 2008_Powershell_Powershell 2.0_Powershell 3.0 - Fatal编程技术网

Sql server 如何使用powershell运行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

我想使用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]

您可以按原样使用代码,只需将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查询编写的代码相似。对脚本而不是查询有任何进一步的建议吗?