Sql server 为什么在插入信息时重复我的值?
我正在创建一个脚本,该脚本通过Active directory,然后在输入信息时根据另一个查询搜索信息,而Active directory中没有任何信息。即使没有该站点的信息,最后输入的区域中的信息也会进入该SQL行。我是否应该在foreach循环中创建一个if-else语句来解决这个问题Sql server 为什么在插入信息时重复我的值?,sql-server,powershell,active-directory,Sql Server,Powershell,Active Directory,我正在创建一个脚本,该脚本通过Active directory,然后在输入信息时根据另一个查询搜索信息,而Active directory中没有任何信息。即使没有该站点的信息,最后输入的区域中的信息也会进入该SQL行。我是否应该在foreach循环中创建一个if-else语句来解决这个问题 while($rows.Read()){ $SITEINFO = $rows['ActiveDirectoryOU'] $ADARRAY= Get-ADGroupMember -Id
while($rows.Read()){
$SITEINFO = $rows['ActiveDirectoryOU']
$ADARRAY= Get-ADGroupMember -Identity $SITEINFO | Get-ADUser -Properties ('Mail')
ForEach($OBJECT in $ADARRAY){
$NAME = $OBJECT.Name
$USER = $OBJECT.SamAccountName
$EMAIL = $OBJECT.Mail
$SITECODE = $SITEINFO
$INSERT = "INSERT INTO $TABLE VALUES ('$USER','$SITECODE','$EMAIL', '$NAME');"
$SQL = $SQLCON.CreateCommand()
$SQL.CommandText = $INSERT
$SQL.ExecuteNonQuery()
}
}
}
$SQLCONN.Close()
ActiveDirectoryOU字段的数据类型是什么?ActiveDirectoryOU数据类型是varchar为什么要尝试ForEach字符串?内存持久性是我的第一个猜测。在插入后将值设置为$null或空字符串以进行检查。如@EBGreen所说,这可能与作用域有关。在执行
$NAME=$OBJECT.NAME
之前,请设置$NAME='
,如果需要,请在插入之前检查这些值是否只是'
,并跳过它们。数组中可能有一些行是空的,这就是原因。