установите/удалите службу Windows

Вопрос в том, можно ли удалить только столбец из несуществующей таблицы ;-)

BEGIN TRANSACTION

IF exists (SELECT * FROM  sys.columns c 
INNER JOIN  sys.objects t ON (c.[object_id] = t.[object_id])
WHERE t.[object_id] = OBJECT_ID(N'[dbo].[MyTable]')
AND c.[name] = 'ColumnName')
    BEGIN TRY
        ALTER TABLE [dbo].[MyTable] DROP COLUMN ColumnName
    END TRY
    BEGIN CATCH
        print 'FAILED!'
    END CATCH
ELSE
    BEGIN 
        SELECT ERROR_NUMBER() AS ErrorNumber;
        print 'NO TABLE OR COLUMN FOUND !'
    END 

COMMIT  
6
задан p.campbell 31 May 2013 в 16:23
поделиться

3 ответа

Вы не упомянули, какой язык вы используете. Скорее всего, с этим справится утилита установки Windows .

4
ответ дан 8 December 2019 в 04:55
поделиться

Если я правильно понял ваш вопрос, вам сначала нужно создать установщик из VSTS. Прошло некоторое время с тех пор, как я его сделал, но в основном это выглядит так:

http://csharpcomputing.com/Tutorials/Lesson22.htm

Создав установщик, вы можете автоматизировать его с помощью PowerShell.

Если вы действительно хотите, чтобы PowerShell был установщиком вашей службы, возможно, есть способ автоматизировать установщик службы Windows из PowerShell с помощью класса ServiceInstaller .

2
ответ дан 8 December 2019 в 04:55
поделиться

Вот очищенная версия сценария установки, который я написал. Должен продемонстрировать все, что вам нужно сделать:

## delete existing service
# have to use WMI for much of this, native cmdlets are incomplete
$service = Get-WmiObject -Class Win32_Service -Filter "Name = 'My Service'"
if ($service -ne $null) 
{ 
    $service | stop-service
    $service.Delete() | out-null 
}

## run installutil
# 'frameworkdir' env var apparently isn't present on Win2003...
$installUtil = join-path $env:SystemRoot Microsoft.NET\Framework\v2.0.50727\installutil.exe
$serviceExe = join-path $messageServerPath MyService.exe
$installUtilLog = join-path $messageServerPath InstallUtil.log
& $installUtil $serviceExe /logfile="$installUtilLog" | write-verbose

$service = Get-WmiObject -Class Win32_Service -Filter "Name = 'My Service'"

# change credentials if necessary
if ($user -ne "" -and $password -ne "")
    { $service.change($null, $null, $null, $null, $null, $null, $user, $password, $null, $null, $null) | out-null }

# activate
$service | set-service -startuptype Automatic -passthru | start-service
write-verbose "Successfully started service $($service.name)"
18
ответ дан 8 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: