1
我有一个Powershell脚本成功地连接到SQL Server数据库并执行过程。 SQL过程包含一个选择如下:带参数的Powershell脚本执行SQL过程已截断输出
SELECT @sql AS 'ColDemo1'
变量@sql
是nvarchar(max)。我想@sql的全部内容返回到一个新的SQL文件,但我只得到了第一行和不必要的列标题如下:
ColDemo1
------------
First line of data...
PowerShell脚本如下:
$server = "SERVER\DEMO"
$database = "dbDemo"
$pZero = "PVal0"
$pOne = "PVal1"
$pTwo = "PVal2"
$pThree = "PVal3"
function Run-SQLUSP {
param (
$pZero,
$pOne,
$pTwo,
$pThree
)
$conn = New-Object System.Data.SqlClient.SqlConnection("Server=${server};Database='${database}';Integrated Security=TRUE")
$conn.Open()
$cmd = $conn.CreateCommand()
$cmd.CommandText = "dbo.demoSp '$pZero', '$pOne', '$pTwo', '$pThree'"
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$dataset = New-Object System.Data.DataSet
[void]$adapter.Fill($dataset)
$dataset.tables[0]
}
Run-SQLUSP $pZero $pOne $pTwo $pThree | Out-File "c:\DemoFolder\DemoScriptName.sql" -width 8000
如何修改我的Powershell脚本以将输出的所有行返回到新的sql文件?在SSMS中执行过程时,结果集将返回到单个表格单元格中(不是多行)。被要求
尝试使用'出口csv',而不是'出file' – brendan62269
@ brendan62269感谢,使用'出口csv'避免截断问题。但是结果仍然包括用引号引起的列标题,数据也用引号引起来。我怎样才能返回第一个单元格值?注意。以及更改'Out-File',我也删除了'-width 8000'并添加了'-NoTypeInformation'。 – Fletch
我尝试在函数内追加'.rows [0] [0]'到'$ dataset.tables [0]',但是这会返回长度引号和一个我认为是字符串长度的数字,也用引号。我可以使用类似的东西来返回第一个单元格的值吗? – Fletch