使用powershell执行.sql文件并将输出存储在文本文件中

时间:2013-10-30 15:16:15

标签: powershell

我正在尝试从powershell运行sql脚本.sql文件并将结果保存到.sql文件中。 概述:SQL数据库还原需要用户和权限备份预还原,并且在还原完成后,我们需要在数据库上执行输出(用户权限备份,我们执行了预还原)。

这是我的脚本,当我执行时,我看不到任何输出

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$DataSet = New-Object System.Data.DataSet
$MyQuery = get-content “C:\Users\Security.sql”;
$SqlConnection.ConnectionString = “Server = DBATest; Database = Testdb; Integrated   Security = True”
$SqlCmd.CommandText = $MyQuery;
$SqlCmd.Connection = $SqlConnection
$SqlAdapter.SelectCommand = $SqlCmd
$SqlAdapter.Fill($DataSet)|out-null
$DataSet.Tables[0] | out-file C:\users\outputuser.sql

有人能指出我正确的方向吗?提前谢谢

1 个答案:

答案 0 :(得分:3)

如果安装了SQL Server管理工具(2008或更新版本),这将变得更加容易。

add-pssnapin SqlServerCmdletSnapin100;
$myData = invoke-sqlcmd -InputFile "c:\users\security.sql" -serverinstance dbatest -database testdb;
$mydata | out-file c:\users\outputuser.sql;
Remove-PSSnapin SqlServerCmdletSnapin100;

如果安装了2012(或更新版本),则可以跳过管理单元并导入sqlps模块:

push-location;
import-module sqlps;
Pop-Location;
$myData = invoke-sqlcmd -InputFile "c:\users\security.sql" -serverinstance dbatest -database testdb;
$mydata | out-file c:\users\outputuser.sql;
remove-module sqlps;

输出文件是否为您提供了您正在寻找的格式,我不能说,因为您已经指定了要查找的内容,也没有显示查询本身。您可能希望将其导出为CSV格式,或者使用format-table来构建纯文本或转换为HTML。