首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PowerShell从SQLPS脚本执行SQLPS或xp_cmdshell时出错

使用PowerShell从SQLPS脚本执行SQLPS或xp_cmdshell时出错
EN

Stack Overflow用户
提问于 2022-01-20 01:25:58
回答 1查看 175关注 0票数 0

我最初创建了一组脚本,用于使用SQLCMD将动态查询系统的结果提取到CSV。但是,由于数据集中包含大量格式代码的大文本字段,CSV文件变得难以使用。然后,我转而使用SQLPS或PowerShell,它们在格式化输出文件方面做得很好。不幸的是,当从SSMS手动运行the文件时,我无法将提取的CSV文件保存下来。我可以将相同的输出代码粘贴到SQLPS中,使用PowerShell.exe或SQLPS.exe可以很好地工作。

我检查了提取文件夹上的文件权限,尝试了SQLPS和PowerShell的不同选项,并检查了Process中的执行情况,但我不知道为什么这不起作用。

代码语言:javascript
复制
SET @Cmd = 'sqlps 
     $FromDate = "' + @FromDate + '";
     $ToDate = "' + @ToDate + '";
     $IncidentTypeName = "' + @IncidentTypeName + '";
     $DateField = "' + @DateField + '";
     $QueryType = "' + @QueryType + '";
     $PersonTypeID = "' + @PersonTypeID + '";
     $var = "FromDate=$FromDate", "ToDate=$ToDate", "IncidentTypeName=$IncidentTypeName", "DateField=$DateField", "QueryType=$QueryType", "PersonTypeID=$PersonTypeID";

invoke-sqlcmd -ServerInstance ' +@Server+ ' -Database ' +@Database+ ' -Username '+@Login+' -Password '+@Password + ' -QueryTimeout 0 ' +
    ' -InputFile "'+@SqlScriptFolder+@InputFileType+'" -Variable $var | export-csv -Delimiter "," -NoTypeInformation -Path "'+@ExtractFolder+@OutputFile+'.csv"'

print @Cmd
EXEC master..xp_cmdshell @Cmd

我的要求是提取一个标准的CSV文件,不幸的是,当我使用SQLCMD时,我试图利用我早先在项目中收集的大量T代码。它还需要是一个自动化的过程,这就是为什么我试图利用PowerShell或SQLPS。我在运行Windows 10的开发计算机上使用SQLServer2019。

对这个有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-09 18:34:47

在对我疯狂的过程进行了大量的研究之后,我找到了一个解决方案,即,我肯定应该重写为一个PowerShell脚本(而不是使用xp_cmdshell)

使用一个(backslash)

  • replace ( SET @Cmd = REPLACE(REPLACE(@Cmd, NCHAR(13), N''), NCHAR(10), N' ');

)转义" (双引号),回车和换行符。

来自invoke-sqlcmd-doesnt-work-when-used-with-xp-cmdshell

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70779785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档