Пакет решений SharePoint Развертывание случайных сбоев - PullRequest
1 голос
/ 05 мая 2009

Я периодически вижу эту ошибку во время развертывания решения и / или активации функции ...

Копирование этого файла не удалось. Эта операция использует службу администрирования SharePoint (spadmin), с которой невозможно связаться. Если служба остановлена ​​или отключена, запустите ее и попробуйте снова.

Ниже приведен сценарий PowerShell, используемый для развертывания:

$programfiles_path = $null
$stsadm_path = $null
$url = $null
$solution = $null
$feature = $null
$appPoolName = $null



$url = "http://" + ${env:COMPUTERNAME}
$programfiles_path = ${env:ProgramW6432}

if ($programfiles_path -eq $null)
{
    $programfiles_path = ${env:ProgramFiles}
}

$stsadm_path = $programfiles_path + "\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"

if(!(test-path $stsadm_path))
{
    echo "stsadm.exe was not found: $stsadm_path"
    exit -1
}


ECHO "***********************************"
ECHO "*** Contoso.Common.SolutionPackage ***"
ECHO "***********************************"

$solution = "Contoso.Common.SolutionPackage.wsp"

ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.Common.Infrastructure"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.CustomCAS"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.Common.WebParts"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.ExcelExtender"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }



ECHO "*********************************"
ECHO "*** Contoso.Something ***"
ECHO "*********************************"

$solution = "Contoso.Something.wsp"

ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.Something"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }




ECHO "*********************************"
ECHO "*** Contoso.Nothing ***"
ECHO "*********************************"

$solution = "Contoso.Nothing.wsp"

ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = $null










ECHO "*****************************************"
ECHO "*** Contoso.Everything ***"
ECHO "*****************************************"

$solution = "Contoso.Everything.wsp"

ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.Everything"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }




ECHO "*****************************"
ECHO "*** Contoso.CashMoneyMillionaires ***"
ECHO "*****************************"

$solution = "Contoso.CashMoneyMillionaires.wsp"

ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.CashMoneyMillionaires"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }





ECHO "************************************"
ECHO "*** Contoso.DollaDollaBill ***"
ECHO "************************************"

$solution = "Contoso.DollaDollaBill.wsp"

ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }

$feature = "Contoso.DollaDollaBill"

ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force 
if ($? -eq $false) { exit }

ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs        
if ($? -eq $false) { exit }



ECHO "************************"
ECHO "*** IIS APPPOOL MGMT ***"
ECHO "************************"

ECHO "*** query wmi for apppool ***"
$appPoolName = "SharedServices1"
$appPool = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" | Where-Object {$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"}
if ($? -eq $false) { exit }

ECHO "*** recycle apppool ***"
$appPool.Recycle()
if ($? -eq $false) { exit }

У меня есть эквивалентный командный файл, который также случайно выходит из строя. Сбой на разных серверах. Я совершенно сбит с толку относительно причины и решения.

Любая помощь будет оценена.

Ответы [ 5 ]

7 голосов
/ 06 мая 2009

Лучшее, что я обнаружил, это наличие Power Shell, который будет ожидать завершения отложенного задания таймера, прежде чем перейти к следующему заданию, но вы можете сделать паузу, однако вам потребуется проверить время работы закончено.

Хитрость в том, чтобы опросить сервер с помощью stsadm -o displayolution -name. если в ферме установлен wsp, команда возвращает некоторый xml, если для развертывания есть задание таймера, в xml есть тег «SolutionDeploymentJob». С помощью простого цикла вы можете дождаться окончания рабочего времени

Function WaitForJobOn($name){
    [xml]$val = stsadm -o displaysolution -name $name
    while($val.Solution.SolutionDeploymentJob) {
        $log.Info("waiting for a job on $name")
        sleep 5
        [xml]$val = stsadm -o displaysolution -name $name
    }
    $log.Info("Job Compleated")
}

использование: WaitForJobOn somefeature.wsp

следует отметить, что функция не будет работать, если wsp не будет добавлен в ферму.

2 голосов
/ 29 июня 2009

Я тоже сталкиваюсь с этой проблемой. Единственный способ обойти это - перезапускать службу администрирования Windows SharePoint Services каждый раз перед развертыванием / откатом.

ОБНОВЛЕНИЕ: Я перезагрузил сервер WFE, и эта проблема исчезла. Хотелось бы, чтобы у меня было больше информации, почему, но классическое решение перезагрузки Microsoft снова преобладает.

Это очень раздражает.

ДРУГОЕ ОБНОВЛЕНИЕ: я только что выпустил команду stsadm с именем smartexecjobdefs , которая решает эту проблему. В этом блоге я рассказываю об Исполнителе определения задания, который отслеживает завершение выполнения заданий перед возвратом управления. Эта команда stsadm просто переносит этот класс.

0 голосов
/ 01 июля 2009

Я считаю, что служба администрирования Windows SharePoint (SPAdmin) время от времени дает сбой в sp1 при использовании в ферме SharePoint с несколькими веб-серверами переднего плана.

Я предлагаю отключить spadmim и запустить stsadm -o execadmsvcjobs с помощью инструмента удаленного выполнения, такого как psexec.

Пример:

psexec.exe @ serverlist.txt "C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 12 \ BIN \ stsadm.exe" -o execadmsvcjobs

0 голосов
/ 30 июня 2009

У меня тоже была эта проблема. Каждый раз, когда я пытался развернуть решение, некоторые файлы были скопированы, затем он остановился с этой ошибкой, прежде чем скопировать все из них. У меня нет никаких доказательств, но я считаю, что антивирусное программное обеспечение на сервере блокировало файлы и создавало помехи.

В конечном итоге это сработало после того, как я несколько раз пытался развернуть решение (каждый раз копируя на несколько файлов больше, чем раньше).

0 голосов
/ 06 мая 2009

Вам нужно сделать паузу между развертыванием вашего решения и попыткой активировать свои функции - это немного похоже на гонку.

Подробнее: Если имеется несколько веб-интерфейсов, медленное подключение или серверы заняты, или любое количество других вещей, которые приводят к тому, что подобные вещи занимают некоторое время, - тогда вы запускаете в беду. Пакетные файлы не могут справиться с этим - сценарий Powershell может использовать объектную модель, чтобы проверить, действительно ли решение развернуто, прежде чем двигаться дальше.

...