繁体   English   中英

SQL 联接在 Powershell 脚本中不起作用。 投掷错误

[英]SQL Joins are not working in Powershell Scripts. Throwing Error

我编写了一个 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

有人可以提供解决方案来覆盖这个问题以获得预期的结果

该错误来自 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)

下面的代码为我提供了我正在寻找的确切结果。 我已经修改了一些代码并且它可以工作

$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

感谢大家。 欢迎提出建议,如果代码需要升级

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM