4

我正在尝试从 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

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

4

1 回答 1

4

如果您安装了 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。

于 2013-10-30T17:21:50.103 回答