SQLPS选项卡扩展(选项卡完成)太慢,它完全无法使用。我的配置有问题吗?是否有更高版本我应该以某种方式升级到?是否有某种修复方法可以使其可用?
相关版本信息:
答案 0 :(得分:1)
就我所知,性能问题实际上是在SqlServer psprovider中Resolve-Path的实现。 Resolve-Path是TabExpansion的默认实现(在Powershell v2中)如何完成路径。
通过重写TabExpansion函数以使用Get-ChildItem和Where-Object而不是Resolve-Path,我能够解决这个问题。你可以find the latest implementation in this bitbucket repo。
以下是当前的实施:
function TabExpansion($line, $lastWord) {
if (!((get-location).Provider.Name -eq "SqlServer")) {
TabExpansionSqlPsBackup $line $lastWord
}
else {
$index = $lastWord.LastIndexOfAny(@('\', '/'))
if ($index -gt -1) {
$parent = $lastWord.substring(0, $index+1)
$leaf = $lastWord.substring($index+1)
}
else {
$parent = ""
$leaf = $lastWord
}
$matches = ls -path $parent | ?{ $_.PSChildName -match "^$leaf" }
if ($matches) {
$matches | %{ $parent + $_.PSChildName }
}
else {$lastWord}
}
}
将该函数放在位于〜\ Documents \ WindowsPowerShell \ Microsoft.SqlServer.Management.PowerShell.sqlps_profile.ps1
的sqlps配置文件中。