[英]Trouble executing SQLPS or PowerShell from T-SQL script using xp_cmdshell
我最初創建了一組腳本來使用 SQLCMD 從動態查詢系統中提取結果到 CSV。 然而,由於數據集中的大文本字段包含大量格式代碼,CSV 文件變得笨拙。 然后我切換到使用 SQLPS 或 PowerShell,它在格式化 output 文件方面做得很好。 不幸的是,當從 SSMS 手動運行 T-SQL 文件時,我無法獲取要保存的提取 CSV 文件。 我可以將相同的 output 代碼粘貼到 SQLPS 中,使用 PowerShell.exe 或 SQLPS.exe 可以正常工作。
我檢查了提取文件夾的文件權限,嘗試了 SQLPS 和 PowerShell 的不同選項,並查看了進程監視器中的執行情況,但我不知道為什么這不起作用。
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-SQL 代碼。 它還需要是一個自動化過程,這就是我嘗試利用 PowerShell 或 SQLPS 的原因。 我在運行 Windows 10 的開發機器上使用 SQL Server 2019。
關於這個有什么想法嗎?
好吧,在對我的瘋狂過程進行了大量研究之后,我絕對應該將其重寫為 PowerShell 腳本(而不是使用 xp_cmdshell),我找到了解決方案,即
\
(反斜杠)轉義"
(雙引號)SET @Cmd = REPLACE(REPLACE(@Cmd, NCHAR(13), N''), NCHAR(10), N' ');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.