Start-Transaction

Elindít egy tranzakciót.

Syntax

Start-Transaction
     [-Timeout <Int32>]
     [-Independent]
     [-RollbackPreference <RollbackSeverity>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Description

A Start-Transaction parancsmag elindít egy tranzakciót, amely egy egységként felügyelt parancsok sorozata. A tranzakciók elvégezhetők vagy véglegesíthetik. Azt is megteheti, hogy teljesen visszavonja vagy visszaállítja a tranzakció által módosított adatokat az eredeti állapotába. Mivel a tranzakció parancsai egységként vannak kezelve, az összes parancs véglegesítése vagy az összes parancs vissza lesz állítva.

Alapértelmezés szerint, ha a tranzakció bármelyik parancsa hibát okoz, a rendszer automatikusan visszaállítja a tranzakciókat. Ezt a viselkedést a RollbackPreference paraméter használatával módosíthatja.

A tranzakciókban használt parancsmagokat úgy kell megtervezni, hogy támogassák a tranzakciókat. A tranzakciókat támogató parancsmagok UseTransaction paraméterrel rendelkeznek. Egy szolgáltató tranzakcióinak végrehajtásához a szolgáltatónak támogatnia kell a tranzakciókat. A Windows Vista és a Windows operációs rendszer újabb verzióiban a Windows PowerShell-beállításjegyzék-szolgáltató támogatja a tranzakciókat. A Microsoft.PowerShell.Commands.Management.TransactedString osztály használatával kifejezéseket is felvehet a tranzakciókba a Windows rendszer bármely olyan verziójában, amely támogatja a Windows PowerShellt. Más Windows PowerShell-szolgáltatók is támogathatják a tranzakciókat.

Egyszerre csak egy tranzakció lehet aktív. Ha egy tranzakció folyamatban lévő új, független tranzakciót indít el, az új tranzakció lesz az aktív tranzakció, és az eredeti tranzakció módosítása előtt véglegesítenie vagy vissza kell állítania az új tranzakciót.

Start-Transaction A parancsmag a Windows PowerShell tranzakciós funkcióját támogató parancsmagok egyike. További információ: about_Transactions.

Példák

1. példa: Tranzakció indítása és visszaállítása

Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Undo-Transaction

Ezek a parancsok elindulnak, majd visszaállítanak egy tranzakciót. Mivel a tranzakció vissza lett állítva, a rendszer nem módosítja a beállításjegyzéket.

2. példa: Tranzakció indítása és befejezése

Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Complete-Transaction

Ezek a parancsok elindítják, majd végrehajtják a tranzakciót. A beállításjegyzékben nem történik módosítás, amíg a Complete-Transaction parancsot nem használja.

3. példa: Különböző visszaállítási beállítások használata

Set-Location HKCU:\software
Start-Transaction
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
New-Item -Path . -Name "ContosoCompany" -UseTransaction
Start-Transaction -RollbackPreference never
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
New-Item -Path . -Name "ContosoCompany" -UseTransaction

# Start-Transaction (-rollbackpreference error)

Start-Transaction
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
New-Item : The registry key at the specified path does not exist.

At line:1 char:9
+ new-item <<<<  -Path NoPath -Name ContosoCompany -UseTransaction

New-Item -Path . -Name "Contoso" -UseTransaction

New-Item : Cannot use transaction. The transaction has been rolled back or has timed out.
At line:1 char:9
+ New-Item <<<<  -Path . -Name ContosoCompany -UseTransaction

# Start-Transaction (-rollbackpreference never)

Start-Transaction -RollbackPreference never
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction

New-Item : The registry key at the specified path does not exist.
At line:1 char:9
+ New-Item <<<<  -Path NoPath -Name "ContosoCompany" -UseTransaction

New-Item -Path . -Name "ContosoCompany" -UseTransaction

Hive: HKEY_CURRENT_USER\Software
SKC  VC Name                           Property
---  -- ----                           --------
0   0 ContosoCompany                 {}
Complete-Transaction

# Succeeds

Ez a példa a RollbackPreference paraméter értékének módosításának hatását mutatja be.

Az első parancskészletben nem használja a RollbackPreference parancsotStart-Transaction. Ennek eredményeként a rendszer az alapértelmezett értéket (Hiba) használja. Ha hiba történik egy tranzakcióparancsban, azaz a megadott elérési út nem létezik, a rendszer automatikusan visszaállítja a tranzakciót.

A második parancskészletben Start-Transaction a RollbackPreference függvényt használja Never értékkel. Ennek eredményeképpen, ha hiba történik egy tranzakcióparancsban, a tranzakció továbbra is aktív, és sikeresen befejezhető.

Mivel a legtöbb tranzakciót hiba nélkül kell végrehajtani, a RollbackPreference alapértelmezett értékét általában előnyben részesítik.

4. példa: Használja ezt a parancsmagot, amíg egy tranzakció folyamatban van

Set-Location HKCU:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
Start-Transaction
Get-Transaction
New-Item "ContosoCompany2" -UseTransaction
Complete-Transaction
Complete-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                2                 Active

Ez a példa azt mutatja be, hogy milyen hatással van a használat Start-Transaction , amíg egy tranzakció folyamatban van. Ez a hatás nagyon hasonlít a folyamatban lévő tranzakcióhoz való csatlakozáshoz.

Bár ez egy egyszerűsített parancs, ez a forgatókönyv gyakran előfordul, amikor a tranzakció egy teljes tranzakciót tartalmazó szkript futtatását foglalja magában.

Az első Start-Transaction parancs elindítja a tranzakciót. Az első New-Item parancs a tranzakció része.

A második Start-Transaction parancs új előfizetőt ad hozzá a tranzakcióhoz. A Get-Transaction parancs most egy 2 előfizetői darabszámú tranzakciót ad vissza. A második New-Item parancs ugyanannak a tranzakciónak a része.

A teljes tranzakció befejezéséig nem történik módosítás a beállításjegyzékben. A tranzakció befejezéséhez két Complete-Transaction parancsot kell megadnia, egyet minden előfizetőnek. Ha bármikor visszaállítaná a tranzakciót, az összes tranzakció vissza lesz állítva mindkét előfizető számára.

5. példa: Független tranzakció indítása folyamatban

Set-Location HKCU:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
Start-Transaction -Independent
Get-Transaction
Undo-Transaction
New-ItemProperty -Path "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Complete-Transaction
Get-ChildItem contoso*
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active
Undo-Transaction
New-ItemProperty -Path "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
MyKey
-----
123
Complete-Transaction
Get-ChildItem contoso*
Hive: HKEY_CURRENT_USER\Software
SKC  VC Name                           Property
---  -- ----                           --------
0   1 MyCompany                      {MyKey}

Ez a példa azt mutatja be, hogy a független paraméterrel Start-Transaction hogyan indíthat el egy tranzakciót, miközben egy másik tranzakció folyamatban van. Ebben az esetben az új tranzakció az eredeti tranzakció befolyásolása nélkül lesz visszaállítva.

Bár a tranzakciók logikailag függetlenek, mivel egyszerre csak egy tranzakció lehet aktív, vissza kell állítania vagy véglegesítenie kell a legújabb tranzakciót, mielőtt újra meg kellene dolgoznia az eredeti tranzakción.

Az első parancskészlet elindít egy tranzakciót. A New-Item parancs az első tranzakció része.

A második parancskészletben a parancs a Start-Transaction Független paramétert használja. Az Get-Transaction alábbi parancs az aktív tranzakció tranzakcióobjektumát jeleníti meg, amely a legújabb. Az előfizetők száma egyenlő 1-sel, amely azt mutatja, hogy a tranzakciók nem kapcsolódnak egymáshoz.

Amikor az aktív tranzakciót egy Undo-Transaction parancs használatával visszaállítja, az eredeti tranzakció újra aktívvá válik.

Az New-ItemProperty eredeti tranzakció részét képező parancs hiba nélkül befejeződik, és az eredeti tranzakció a Complete-Transaction parancs használatával hajtható végre. Ennek eredményeképpen a beállításjegyzék megváltozik.

6. példa: Olyan parancsok futtatása, amelyek nem részei a tranzakciónak

Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany1" -UseTransaction
New-Item "ContosoCompany2"
New-Item "ContosoCompany3" -UseTransaction
Get-ChildItem contoso*

Hive: HKEY_CURRENT_USER\Software
SKC  VC Name                           Property
---  -- ----                           --------
0   0 ContosoCompany2                {}

Complete-Transaction
Get-ChildItem contoso*

Hive: HKEY_CURRENT_USER\Software
SKC  VC Name                           Property
---  -- ----                           --------
0   0 ContosoCompany1                     {}
0   0 ContosoCompany2                     {}
0   0 ContosoCompany3                     {}

Ez a példa azt mutatja be, hogy a tranzakció folyamatban lévő állapotában elküldött parancsok belefoglalhatók a tranzakcióba, vagy nem vehetők fel. Csak a UseTransaction paramétert használó parancsok részei a tranzakciónak.

Az első és a harmadik New-Item parancs a UseTransaction paramétert használja. Ezek a parancsok a tranzakció részét képezik. Mivel a második New-Item parancs nem használja a UseTransaction paramétert , nem része a tranzakciónak.

Az első Get-ChildItem parancs megjeleníti az effektust. A második New-Item parancs azonnal befejeződik, de az első és a harmadik New-Item parancs csak a tranzakció véglegesítése után lép érvénybe.

A Complete-Transaction parancs véglegesíti a tranzakciót. Ennek eredményeképpen a második Get-ChildItem parancs azt mutatja, hogy az összes új elem hozzá lesz adva a beállításjegyzékhez.

7. példa: Olyan tranzakció visszaállítása, amely nem fejeződik be egy megadott időpontban

Start-Transaction -Timeout 2

# Wait two minutes...

Get-Transaction
New-Item HKCU:\Software\ContosoCompany -UseTransaction
Start-Transaction -Timeout 2

# Wait two minutes...

Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   -----------
Error                1                 RolledBack

New-Item HKCU:\Software\ContosoCompany -UseTransaction

New-Item : Cannot use transaction. The transaction has been rolled back or has timed out.
At line:1 char:9
+ new-item <<<<  MyCompany -UseTransaction

Ez a parancs az Időtúllépés paraméterrel Start-Transaction indít el egy tranzakciót, amelyet két percen belül végre kell hajtani. Ha a tranzakció nem fejeződik be, amikor az időtúllépés lejár, a rendszer automatikusan visszaállítja.

Az időtúllépés lejártakor nem kap értesítést, de a tranzakcióobjektum Állapot tulajdonsága a RolledBack értékre van állítva, és a UseTransaction paramétert használó parancsok sikertelenek.

Paraméterek

-Confirm

Jóváhagyást kér a parancsmag futtatása előtt.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Independent

Azt jelzi, hogy ez a parancsmag egy olyan tranzakciót indít el, amely független a folyamatban lévő tranzakcióktól. Alapértelmezés szerint, ha Start-Transaction egy másik tranzakció folyamatban van, a rendszer új előfizetőt ad hozzá a folyamatban lévő tranzakcióhoz. Ez a paraméter csak akkor van hatással, ha egy tranzakció már folyamatban van a munkamenetben.

Alapértelmezés szerint, ha Start-Transaction egy tranzakció folyamatban van, a meglévő tranzakcióobjektum újra felhasználható, és az előfizetők száma növekszik. Az effektus hasonlít az eredeti tranzakcióhoz való csatlakozáshoz. Egy Undo-Transaction parancs visszaállítja az egész tranzakciót. A tranzakció befejezéséhez minden előfizetőhöz meg kell adnia egy Complete-Transaction parancsot. Mivel az egyidejűleg folyamatban lévő tranzakciók többsége kapcsolódik, az alapértelmezett érték elegendő a legtöbb használathoz.

Ha megadja a Független paramétert, ez a parancsmag létrehoz egy új tranzakciót, amely az eredeti tranzakció befolyásolása nélkül befejezhető vagy visszavonható. Mivel azonban egyszerre csak egy tranzakció lehet aktív, az eredeti tranzakció folytatása előtt be kell fejeznie vagy vissza kell állítania az új tranzakciót.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RollbackPreference

Megadja azokat a feltételeket, amelyek mellett a rendszer automatikusan visszaállít egy tranzakciót. A paraméter elfogadható értékei a következők:

  • Error A rendszer automatikusan visszaállítja a tranzakciót, ha megszűnő vagy nem végződő hiba történik.
  • TerminatingError A rendszer automatikusan visszaállítja a tranzakciót, ha megszűnik a hiba.
  • Never A rendszer soha nem állítja vissza automatikusan a tranzakciót.

Az alapértelmezett érték Error.

Type:RollbackSeverity
Accepted values:Error, TerminatingError, Never
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Timeout

A tranzakció aktív maximális időtartamát adja meg percekben. Az időtúllépés lejártakor a rendszer automatikusan visszaállítja a tranzakciót.

Alapértelmezés szerint nincs időtúllépés a parancssorban indított tranzakciók esetében. Ha a tranzakciókat szkript indítja el, az alapértelmezett időtúllépés 30 perc.

Type:Int32
Aliases:TimeoutMins
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Bemutatja, mi történne a parancsmag futtatásakor. A parancsmag nem fut.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

None

Ehhez a parancsmaghoz nem csövezhet be bemenetet.

Kimenetek

None

Ez a parancsmag nem hoz létre kimenetet.