EINFÜHRUNG

Microsoft hat eine Sicherheitsempfehlung zu einem Sicherheitsrisiko in Microsoft SQL Server herausgegeben, das eine Remotecodeausführung ermöglichen kann. Diese Sicherheitsempfehlung enthält zusätzliche sicherheitsrelevante Informationen. Sie finden die Sicherheitsempfehlung auf folgender Microsoft-Website:

http://www.microsoft.com/germany/technet/sicherheit/empfehlungen/961040.mspxDieser Artikel enthält ein VB-Skript, mit dem Sie eine Problemumgehung auf alle auf einem lokalen Computer ausgeführten Instanzen von SQL Server anwenden können.

BEISPIEL FÜR EIN VB-SKRIPT, MIT DEM SIE DIE PROBLEMUMGEHUNG ANWENDEN KÖNNEN

Mithilfe dieses VB-Skripts können Sie die Berechtigung "Execute" für die Rolle "Public" in der erweiterten gespeicherten Prozedur "sp_replwritetovarbin" für alle betroffenen Versionen von SQL Server, die auf dem lokalen Computer ausgeführt werden, verweigern.

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Mitarbeiter der Microsoft Product Support Services erklären Ihnen gerne die Funktionsweise einer bestimmten Prozedur. Sie werden diese Beispiele jedoch weder modifizieren, um zusätzliche Funktionalität zu schaffen, noch Prozeduren entwickeln, die auf Ihre spezifischen Bedürfnisse zugeschnitten sind.


Kopieren Sie diesen Code in eine Textdatei, speichern Sie die Datei mit der Dateinamenerweiterung VBS, und führen Sie die Skriptdatei anschließend unter Verwendung von "CScript.exe" aus. Das Skript wird für alle ausgeführten Instanzen von SQL Server auf dem lokalen Computer wiederholt und wendet die Problemumgehung auf die betroffenen Versionen an. Sie müssen für jede Instanz von SQL Server ein Mitglied der Rolle "sysadmin" sein, um die Problemumgehung anwenden zu können. Wenn Sie über kein Windows-Konto verfügen, das für alle betroffenen Server, auf denen SQL Server ausgeführt wird, ein Mitglied der Rolle "sysadmin" ist, müssen Sie dieses Skript möglicherweise unter mehreren Konten ausführen. Wenn Sie unter Windows Server 2008 und Windows Vista ein Windows-Administratorkonto verwenden, das ein Mitglied der Rolle "sysadmin" ist, müssen Sie dieses Skript in einer Eingabeaufforderung mit erhöhten Rechten ausführen.

'*************************************************************************************
'Beschreibung: Dieses Skript wird für alle ausgeführten Instanzen von SQL Server wiederholt
' und verweigert die "execute"-Berechtigung für "sp_replwritetovarbin" für "public"
' in allen betroffenen Versionen.
' DIESE PROBLEMUMGEHUNG SOLLTE NICHT VERWENDET WERDEN, WENN
' EIN SICHERHEITSUPDATE BEREITGESTELLT UND INSTALLIERT WURDE.
'*************************************************************************************

OPTION EXPLICIT
ON ERROR RESUME NEXT

' Werte der Konstanten
CONST EXIT_SUCCESS = 0
CONST EXIT_FAILURE = 1
CONST EXIT_NOINSTANCES = -1
CONST DEFAULTNAMESPACE = "root\default"
CONST STDREGPROV = "stdregprov"
CONST HKEY_LOCAL_MACHINE = &H80000002
CONST REG_MULTI_SZ = 7
CONST REG_SZ = 1
CONST adCmdText = 1


Call VBMain()

Function VBMain()
Err.Clear
ON ERROR RESUME NEXT

Dim sInstances(), strInstance, i, TotalCount
VBMain = EXIT_SUCCESS
If GetInstances(sInstances, TotalCount) = FALSE Then
WScript.Quit EXIT_FAILURE
End If

If IsEmptyNull(sInstances) Then
WScript.Echo "INFO: Es sind keine Instanzen vorhanden."
VBMain = EXIT_NOINSTANCES
Exit Function
End If

For i = 0 To TotalCount-1
strInstance = sInstances(i,0)
GetFullInstance strInstance, sInstances(i,1)
If ApplyFix(sInstances(i,0), strInstance) = FALSE Then
WScript.Echo "FEHLER: Problemumgehung konnte auf " + sInstances(i,0) + " nicht angewendet werden." + vbCRLF
VBMain = EXIT_FAILURE
End If
Next

WScript.Echo "INFO: Verarbeitung aller ausgeführten SQL-Instanzen abgeschlossen."
End Function

Function GetInstances(ByRef sInstances, ByRef TotalCount)
Err.Clear
ON ERROR RESUME NEXT

Dim sInstances1, sInstances2, i
Dim instCount1, instCount2
GetInstances = FALSE

If NOT GetRegValue ("", HKEY_LOCAL_MACHINE, "Software\Microsoft\Microsoft SQL Server", "InstalledInstances", sInstances1, REG_MULTI_SZ, TRUE) Then
WScript.Echo "FEHLER: Fehler beim Lesen der auf dem Computer installierten SQL-Instanzen."
Exit Function
End If

sInstances2 = NULL
If IsOs64Bit() = TRUE Then
If NOT GetRegValue ("", HKEY_LOCAL_MACHINE, "Software\Microsoft\Microsoft SQL Server", "InstalledInstances", sInstances2, REG_MULTI_SZ, FALSE) Then
WScript.Echo "FEHLER: Fehler beim Lesen der auf dem Computer installierten SQL-Instanzen."
Exit Function
End If
End If

If IsEmptyNull(sInstances1) AND IsEmptyNull(sInstances2) Then
WScript.Echo "INFO: Keine Instanzen vorhanden."
WScript.Quit EXIT_SUCCESS
End If

instCount1 = 0
instCount2 = 0
TotalCount = 0
If IsEmptyNull(sInstances1) = FALSE Then
instCount1 = UBound(sInstances1) + 1
TotalCount = instCount1
End If

If IsEmptyNull(sInstances2) = FALSE Then
instCount2 = UBound(sInstances2) + 1
TotalCount = TotalCount + instCount2
End If

ReDim PRESERVE sInstances(TotalCount,1)
if instCount1 > 0 Then
For i = 0 To UBound(sInstances1)
sInstances(i,0) = sInstances1(i)
sInstances(i,1) = True
Next
End If
If instCount2 >0 Then
For i = 0 To UBound(sInstances2)
sInstances(i+instCount1,0) = sInstances2(i)
sInstances(i+instCount1,1) = FALSE
Next
End If
GetInstances = TRUE
End Function


Function ApplyFix(ByVal strInstance, ByVal strServerName)
Err.Clear
ON ERROR RESUME NEXT

Dim objConn, objCmd, objCmd1, objRS, objRS1
Dim strCommand, strConn
Dim strBuildVersion, strProductLevel, bApplyFix

' Rückgabewert initialisieren
ApplyFix = FALSE

strConn = "Provider=sqloledb;Initial Catalog=master;Integrated Security=SSPI;Data Source=" + strServerName + ";"
' Fehlerprüfung absichtlich beendet, um den Code kurz zu halten
Set objConn = CreateObject("ADODB.Connection")
Set objCmd = CreateObject("ADODB.Command")
Set objCmd1 = CreateObject("ADODB.Command")

' Öffnen einer Verbindung zur Masterdatenbank
objConn.Open strConn
If ErrorOccurred("Fehler: Keine Verbindung zu " + strInstance) Then
Set objConn = Nothing
Exit Function
End If

' Prüfen der Version vor Anwendung des Fixes
strCommand = "SERVERPROPERTY('ProductVersion') als Version auswählen, SERVERPROPERTY('productlevel') als Produktebene auswählen"
objCmd.ActiveConnection = objConn
objCmd.CommandType = adCmdText
objCmd.CommandText = strCommand

Set objRS = objCmd.Execute()
If ErrorOccurred("FEHLER: Fehler bei Ausführung von """ + strCommand + """ in " + strInstance) = TRUE Then
objConn.Close()
Set objConn = Nothing
ApplyFix = FALSE
Exit Function
End If

strBuildVersion = objRS("version")
strProductLevel = UCase(objRS("productlevel"))

bApplyFix = FALSE
' Problemumgehung nur für SQL 2000 und SQL 2005 (RTM, SP1 und SP2) anwenden
If (CInt(Mid(strBuildVersion,1,1)) = 8) Then
bApplyFix = TRUE
ElseIf CInt(Mid(strBuildVersion,1,1)) = 9 AND (StrComp(strProductLevel,"RTM") = 0 OR StrComp(strProductLevel,"SP1") = 0 OR StrComp(strProductLevel,"SP2") = 0) Then
bApplyFix = TRUE
End If

If bApplyFix = TRUE Then
strCommand = "execute für sp_replwritetovarbin für public verweigern"
objCmd1.ActiveConnection = objConn
objCmd1.CommandType = adCmdText
objCmd1.CommandText = strCommand
Set objRS1 = objCmd1.Execute()
If ErrorOccurred("FEHLER: Fehler bei Ausführung von """ + strCommand + """ in " + strInstance) = FALSE Then
WScript.Echo "INFO: Problemumgehung erfolgreich angewendet für " + strInstance + " (" + strBuildVersion + ")." + vbCRLF
ApplyFix = TRUE
End If
Else
WScript.Echo "INFO: Datenerfassung für " + strInstance + " (" + strBuildVersion + ") ausgelassen, da diese Instanz nicht anfällig ist." + vbCRLF
ApplyFix = TRUE
End If

objConn.Close()
Set objConn = Nothing
Set objCmd = Nothing
Set objCmd1 = Nothing
Set objRS = Nothing
Set objRS1 = Nothing
End Function

Private Function GetRegValue (ByVal strMachineName, ByVal hMainKey, ByVal strPath, ByVal strValueName, ByRef strValue, ByVal iValueType, ByVal b32bit)
Err.Clear
ON ERROR RESUME NEXT

Dim objLocator, objServices, objRegistry, objCtx
Dim sMultiStrings, lRc
GetRegValue = TRUE

'Verbinden mit WMI und Abrufen eines Objekts zu Klasse STDREGPROV.
Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
If b32bit = TRUE Then
objCtx.Add "__ProviderArchitecture", 32
Else
objCtx.Add "__ProviderArchitecture", 64
End If
objCtx.Add "__RequiredArchitecture", TRUE
set objLocator = createobject("wbemscripting.swbemlocator")
set objServices = objLocator.connectserver(strMachineName,DEFAULTNAMESPACE, "", "",,,,objCtx)
set objRegistry = objServices.get(STDREGPROV)
If ErrorOccurred ("FEHLER: Keine Verbindung zu WMI-Namespace " + DEFAULTNAMESPACE) Then
GetRegValue = FALSE
Exit Function
End If

lRc = 0
Select Case iValueType
' Von Interesse nur REG_MULTI_SZ
Case REG_MULTI_SZ
strValue = ""
lRC = objRegistry.GetMultiStringValue(hMainKey, strPath, strValueName, sMultiStrings)
strValue = sMultiStrings
Case REG_SZ
strValue = ""
lRC = objRegistry.GetStringValue(hMainKey, strPath, strValueName, strValue)
Case Else
GetRegValue = FALSE
End Select

If lRc = 2 Or lRc = 3 Then
GetRegValue = TRUE
strValue = ""
ElseIf Err.Number OR lRc <> 0 Then
GetRegValue = FALSE
End If

Set objLocator = Nothing
Set objServices = Nothing
Set objRegistry = Nothing
End Function

Function IsEmptyNull(sCheck)
IsEmptyNull = FALSE
If IsObject(sCheck) Then Exit Function
If IsArray(sCheck) Then Exit Function
If VarType(sCheck) = vbEmpty Then IsEmptyNull = TRUE : Exit Function
If VarType(sCheck) = vbNull Then IsEmptyNull = TRUE : Exit Function
If sCheck = "" Then IsEmptyNull = TRUE
End Function

Private Function ErrorOccurred (ByVal strIn)
If Err.Number <> 0 Then
WScript.Echo strIn
WScript.Echo "FEHLER: 0x" & Err.Number & " - " & Err.Description
Err.Clear
ErrorOccurred = TRUE
Else
ErrorOccurred = FALSE
End If
End Function

Function IsOs64Bit()
Err.Clear
ON ERROR RESUME NEXT

Dim objProc
Set objProc = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'")
If objProc.Architecture = 0 Then
IsOs64Bit = FALSE
Else
IsOs64Bit = TRUE
End If
End Function

Function GetFullInstance (ByRef strInstanceName, ByVal b32bit)
Err.Clear
ON ERROR RESUME NEXT

Dim objServices, objClusters, objCluster
Dim strMacName, isEmpty
Dim strKey, strInstID

GetFullInstance = TRUE

If strComp(UCase(strInstanceName), "MICROSOFT##SSEE", 1) = 0 Then
strInstanceName = "np:\\.\pipe\mssql$microsoft##ssee\sql\query"
Exit Function
End if

strMacName = ""
Set objServices = GetObject("winmgmts:root\cimv2")

' Abfragen des Clusterdiensts
Set objClusters = objServices.ExecQuery ("* aus win32_service auswählen, wobei Name='ClusSvc' AND Started = TRUE")
isEmpty = TRUE
If Err.Number = 0 Then
For each objCluster in objClusters
isEmpty = FALSE
Next
End If

Set objServices = Nothing
Set objClusters = Nothing

If isEmpty = TRUE Then
strInstanceName = BuildInstanceName (".", strInstanceName)
Exit Function
End If

' Wenn Sie hier ankommen, bedeutet dies, dass der Computer ein Clusterknoten ist.
' Fragen Sie daher jetzt die Registrierung ab, um zu ermitteln, ob die SQL-Instanz geclustert ist oder nicht.
' Fragen Sie für SQL 2000 den folgenden Wert ab:
' HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Cluster
' ClusterName
strKey = "SOFTWARE\Microsoft\Microsoft SQL Server\" + strInstanceName + "\Cluster"
GetRegValue "", HKEY_LOCAL_MACHINE, strKey, "ClusterName", strMacName, REG_SZ, b32bit

If StrComp(strMacName, "") <> 0 Then
strInstanceName = BuildInstanceName (strMacName, strInstanceName)
Exit Function
End If

strKey = "SOFTWARE\Microsoft\" + strInstanceName + "\Cluster"
GetRegValue "", HKEY_LOCAL_MACHINE, strKey, "ClusterName", strMacName, REG_SZ, b32bit

If StrComp(strMacName, "") <> 0 Then
strInstanceName = BuildInstanceName (strMacName, strInstanceName)
Exit Function
End If

' Überprüfen Sie die Registrierung nun auf Werte für 2005/2008-Instanzen:
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL
' RegValue = InstanceName
strInstID = ""
strKey = "SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
GetRegValue "", HKEY_LOCAL_MACHINE, strKey, strInstanceName, strInstID, REG_SZ, b32bit

If StrComp(strInstID, "") = 0 Then
' Wenn dieser Schlüssel nicht existiert, als lokale SQL 2000-Instanz zurückgeben.
strInstanceName = BuildInstanceName (".", strInstanceName)
Exit Function
End If

strKey = "SOFTWARE\Microsoft\Microsoft SQL Server\" + strInstID + "\Cluster"
GetRegValue "", HKEY_LOCAL_MACHINE, strKey, "ClusterName", strMacName, REG_SZ, b32bit

If StrComp(strMacName, "") = 0 Then
strMacName = "."
End If

strInstanceName = BuildInstanceName (strMacName, strInstanceName)
End Function

Function BuildInstanceName (ByVal strMachineName, ByVal strInstanceName)
Dim strPrefix

strPrefix = ""
If StrComp(strMachineName, ".") = 0 Then
strPrefix = "lpc:"
End If

If strComp(UCase(strInstanceName), "MSSQLSERVER", 1) = 0 Then
BuildInstanceName = strPrefix + strMachineName
Else
BuildInstanceName = strPrefix + strMachineName + "\" + strInstanceName
End if
End Function

Weitere Informationen zu "CScript.exe" finden Sie auf folgender Website von Microsoft:

http://technet.microsoft.com/de-de/library/bb490887.aspxHinweis Sie sollten dieses Skript nicht verwenden, wenn ein Sicherheitsupdate bereitgestellt und installiert wurde.

BEKANNTE PROBLEME, DIE BEI DER AUSFÜHRUNG DIESES SKRIPTS AUFTRETEN KÖNNEN

Problem 1

Wenn Sie das Skript ausführen, wird die folgende Fehlermeldung angezeigt:

FEHLER: "execute für sp_replwritetovarbin für public verweigern" konnte für <instancename> nicht ausgeführt werden.
FEHLER: 0x-2147217900 - Objekt 'sp_replwritetovarbin' wurde nicht gefunden, weil es nicht vorhanden ist oder Sie nicht die erforderliche Berechtigung haben.
FEHLER: Problemumgehung konnte auf <instancename> nicht angewendet werden.

Ursache 1

Diese Fehlermeldung wird angezeigt, wenn Sie nicht über die zum Anwenden der Änderung erforderlichen Berechtigungen verfügen. Diese Fehlermeldung deutet darauf hin, dass Sie sich erfolgreich bei der Instanz "<instancename>" anmelden konnten.


Der Fehler tritt typischerweise in SQL Server Express auf, wenn die Gruppe "Vordefiniert\Benutzer" standardmäßig über ein Login für die Datenbank verfügt. Die Gruppe ist jedoch kein Mitglied der Rolle "sysadmin".

Die Fehlermeldung kann auch auftreten, wenn Sie die Prozedur "sp_replwritetovarbin" verworfen haben. So lautete die Empfehlung in einem Bericht eines anderen Anbieters. Wir empfehlen das Verwerfen der gespeicherten Prozedur nicht. Stattdessen empfehlen wir die Anwendung dieser Lösung.

Lösung 1

Stellen Sie sicher, dass das Konto, mit dem Sie die Verbindung herstellen, ein Mitglied der Rolle "sysadmin" für diese Instanz der Datenbank ist. Wenn das Konto kein Mitglied ist, fügen Sie entweder das Benutzerkonto, mit dem Sie die Verbindung herstellen, zur Rolle "sysadmin" hinzu, oder verwenden Sie ein anderes Benutzerkonto. In SQL Server 2005 und früheren Versionen ist die Gruppe "Vordefiniert\Administratoren" standardmäßig ein Mitglied der Rolle "sysadmin". Wenn Sie dieses Skript unter Windows Vista oder Windows Server 2008 ausführen, stellen Sie sicher, dass Sie es in einer Eingabeaufforderung mit erhöhten Rechten ausführen.

Problem 2

Wenn Sie das Skript in SQL Server 2005 ausführen, wird die folgende Fehlermeldung angezeigt:

Fehler: Die Verbindung mit <instancename> konnte nicht hergestellt werden.
FEHLER: 0x-2147217843 - Fehler bei der Anmeldung für den Benutzer '<user>'.
FEHLER: Problemumgehung konnte auf <instancename> nicht angewendet werden.

Ursache 2

Diese Fehlermeldung wird angezeigt, wenn Sie keine Verbindung zur Instanz "<instancename>" herstellen konnten, obwohl die Instanz vorhanden ist.

Die Fehlermeldung tritt typischerweise auf, wenn Sie eine Verbindung mit Instanzen von Windows Internal Database oder Microsoft SQL Server 2000 Desktop Edition (Windows) herstellen. Typischerweise verfügen Benutzerkonten nicht über Logins für diese Datenbanken.

Lösung 2

Stellen Sie sicher, dass das zum Ausführen des Skripts verwendete Konto für die Datenbank über ein Login verfügt, das Mitglied der Rolle "sysadmin" ist.

Es empfiehlt sich nicht, einzelne Benutzer zu Windows Internal Database und zu den Datenbanken von Microsoft SQL Server 2000 Desktop Edition (Windows) hinzuzufügen. Wenn Sie dies tun, können die hinzugefügten Benutzer den ordentlichen Betrieb der Datenbanken stören. Stellen Sie in diesem Fall sicher, dass Sie die Verbindung mit einem Konto herstellen, das Mitglied der Rolle "sysadmin" ist. Die Gruppe "Vordefiniert\Administratoren" in Windows ist typischerweise standardmäßig ein Mitglied der Rolle "sysadmin" in SQL Server 2005 und früheren Versionen. Wenn Sie dieses Skript unter Windows Vista oder Windows Server 2008 ausführen, stellen Sie sicher, dass Sie es in einer Eingabeaufforderung mit erhöhten Rechten ausführen.

Problem 3

Möglicherweise treffen Sie auf eine Instanz einer Datenbank mit dem Namen MICROSOFT##SSEE. Sie haben diese Datenbank jedoch nicht installiert.

Ursache 3

Bei dieser Datenbank handelt es sich um die Windows-interne Datenbank, die auch als "SQL Server Embedded Edition" oder manchmal als "Windows Internal Database" oder "Microsoft SQL Server 2000 Desktop Edition (Windows)" bezeichnet wird. Sie wird mit einigen Produkten von Microsoft installiert, beispielsweise SharePoint Services.

Lösung 3

Das Problemumgehungsskript funktioniert für die Windows-interne Datenbank. Es ist keine Aktion Ihrerseits erforderlich.

Bei der Deinstallation einiger Anwendungen wird Windows Internal Database nicht gelöscht.
Weitere Informationen zum Entfernen von Windows Internal Database finden Sie im folgenden Artikel der Microsoft Knowledge Base:

920277 Windows Internal Database wird nicht im Programm Software aufgelistet und nicht entfernt, wenn Sie Windows SharePoint Services 3.0 vom Computer entfernen

Problem 4

Wenn Sie das Skript ausführen, wird die folgende Fehlermeldung angezeigt:


Fehler: Die Verbindung mit .\<instancename> konnte nicht hergestellt werden.
FEHLER: 0x-2147467259 - [DBNETLIB][ConnectionOpen (Connect()).]SQL-Server existiert nicht oder Zugriff verweigert

Ursache 4

Die Fehlermeldung wird angezeigt, wenn die folgenden Bedingungen vorliegen:

  • Sie haben eine 32-Bit-Version von SQL Server 2000 auf einem x64-Bit-Betriebssystem installiert.

  • Sie haben eine 64-Bit-Version von SQL Server 2005 oder SQL Server 2008 auf dem Computer installiert.


Die Fehlermeldung tritt auf, wenn das Skript die 64-Bit-Version der Datei "dbmslpcn.dll" verwendet. Diese Version kann nicht mit den WoW-Instanzen von SQL Server 2000 kommunizieren.

Lösung 4

Starten Sie das Skript mit der 32-Bit-Version der Datei "cscript.exe" aus dem Ordner "%WINDOWS%\SysWOW64". Dadurch wird die 32-Bit-Version der Datei "dbmslpcn.dll" geladen, die WoW-Instanzen erkennen kann.

Informationsquellen

Weitere Informationen darüber, wie Sie Version und Edition von SQL Server ermitteln, finden Sie im folgenden Artikel der Microsoft Knowledge Base:

321185Ermitteln der SQL Server-Version und -Edition

Weitere Informationen

In der folgenden Tabelle sind wichtige technische Revisionen zu diesem Artikel aufgeführt. Die Versionsnummer und die Datumsangabe bei "Geändert am" in diesem Artikel können auf geringfügige redaktionelle oder strukturelle Änderungen an den Inhalten hinweisen, die nicht in der Tabelle aufgelistet sind.

Datum

Revisionen

31. Dezember 2008

Enthält ein aktualisiertes Skript, das SQL Server-Failoverclusterinstanzen erkennt.

30. Dezember 2008

Enthält ein aktualisiertes Skript, das 32-Bit-Versionen von SQL Server erkennt, die unter 64-Bit-Versionen von Windows ausgeführt werden.

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Übersetzungsqualität?
Was hat Ihre Erfahrung beeinflusst?

Vielen Dank für Ihr Feedback!

×