我撰寫了一個 SQL 腳本,它通過 ID 提供來自同一個表的結果。我需要在 PowerShell 中使用這個腳本來提取結果。
它適用于 SQL,但不適用于 Powershell。嘗試使用或不使用加入功能。得到同樣的錯誤。
發現,在 Powershell 命令中無法識別 AS,盡管第二個表沒有通過 Resultant。
下面是代碼,
$QueryUpdate = "SELECT [Table_1].[SystemName] AS [VName]
FROM [Table] LEFT OUTER JOIN
[Table] AS [Table_1] ON [Table].[ParentMachineId] = [Table_1].[id]
WHERE [Table].[Active] = 1 AND [Table_1].[SystemName] IS NOT NULL
AND [Table].[SystemType] NOT IN(4)"
$cmdUpdate=New-Object system.Data.SqlClient.SqlCommand($QueryUpdate,$conn)
$SystemSelect = $cmdUpdate.ExecuteNonQuery()
嘗試從 Powershell 中的查詢中洗掉[ ],得到錯誤為(.) Invalid Statement 或 Missing (.)
執行腳本后,我得到錯誤作為不明確的列名
Exception calling "ExecuteReader" with "0" argument(s): "Ambiguous column name 'SystemName'."
At line:12 char:1
$VMSelect = $cmdUpdate.ExecuteReader()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : NotSpecified: (:) [], MethodInvocationException
FullyQualifiedErrorId : SqlException
有人可以提供解決方案來覆寫這個問題以獲得預期的結果
uj5u.com熱心網友回復:
該錯誤來自 SQL,因此看起來與資料庫的 powershell 連接有效,并且該命令嘗試執行查詢。
也許問題是您沒有為第一個 [Table] 設定別名。
試試這個:
SELECT
B.[SystemName] AS [VName]
FROM [Table] AS A
LEFT OUTER JOIN
[Table] AS B
ON A.[ParentMachineId] = B.[id]
WHERE
A.[Active] = 1 AND
B.[SystemName] IS NOT NULL AND
A.[SystemType] NOT IN(4)
uj5u.com熱心網友回復:
下面的代碼為我提供了我正在尋找的確切結果。我已經修改了一些代碼并且它可以作業
$QueryUpdate = "SELECT [Table_1].[SystemName] AS [VName]
FROM [Table] LEFT OUTER JOIN
[Table] AS [Table_1] ON [Table].[ParentMachineId] = [Table_1].[id]
WHERE [Table].[Active] = 1 AND [Table_1].[SystemName] IS NOT NULL
AND [Table].[SystemType] NOT IN(4)"
$cmdUpdate=New-Object system.Data.SqlClient.SqlCommand($QueryUpdate,$conn)
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmdUpdate)
$da.fill($ds)
$conn.close()
$ds.Tables
謝謝大家。歡迎提出建議,如果代碼需要升級
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/480342.html
