Συμβουλευτικό δελτίο ασφαλείας της Microsoft: Μια ευπάθεια στον SQL Server θα μπορούσε να επιτρέψει απομακρυσμένη εκτέλεση κώδικα

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 961040 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

ΕΙΣΑΓΩΓΗ

Η Microsoft έχει κυκλοφορήσει ένα συμβουλευτικό δελτίο ασφαλείας σχετικά με μια ευπάθεια στον Microsoft SQL Server, η οποία θα μπορούσε να επιτρέψει απομακρυσμένη εκτέλεση κώδικα. Το συμβουλευτικό δελτίο ασφαλείας περιέχει πρόσθετες πληροφορίες που σχετίζονται με την ασφάλεια. Για να προβάλετε το συμβουλευτικό δελτίο ασφαλείας, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:
http://www.microsoft.com/technet/security/advisory/961040.mspx
Αυτό το άρθρο περιλαμβάνει μια δέσμη ενεργειών VB την οποία μπορείτε να χρησιμοποιήσετε για να εφαρμόσετε έναν τρόπο επίλυσης σε όλες τις παρουσίες του SQL Server που εκτελούνται σε έναν τοπικό υπολογιστή.

ΠΑΡΑΔΕΙΓΜΑ ΔΕΣΜΗΣ ΕΝΕΡΓΕΙΩΝ VB ΠΟΥ ΜΠΟΡΕΙΤΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΓΙΑ ΝΑ ΕΦΑΡΜΟΣΕΤΕ ΤΟΝ ΤΡΟΠΟ ΕΠΙΛΥΣΗΣ

Μπορείτε να χρησιμοποιήσετε αυτήν τη δέσμη ενεργειών VB για να αρνηθείτε τα δικαιώματα Εκτέλεσης στο Δημόσιο ρόλο στην εκτεταμένη αποθηκευμένη διαδικασία sp_replwritetovarbin, σε όλες τις εκδόσεις του SQL Server που εκτελούνται στον τοπικό υπολογιστή και επηρεάζονται.

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για λόγους επεξήγησης, χωρίς να παρέχει καμία εγγύηση, σιωπηρή ή ρητή. Σε αυτά περιλαμβάνονται, ενδεικτικά, οι σιωπηρές εγγυήσεις εμπορευσιμότητας ή/και καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία και τον εντοπισμό σφαλμάτων κώδικα διαδικασιών. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας. Ωστόσο, δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες, για να καλύψουν τις συγκεκριμένες απαιτήσεις σας.

Αντιγράψτε αυτόν τον κώδικα σε ένα αρχείο κειμένου, αποθηκεύστε το αρχείο χρησιμοποιώντας την επέκταση ονόματος αρχείου .vbs και, στη συνέχεια, εκτελέστε το αρχείο της δέσμης ενεργειών χρησιμοποιώντας το CScript.exe. Η δέσμη ενεργειών επαναλαμβάνεται σε όλες τις παρουσίες του SQL Server που εκτελούνται στον τοπικό υπολογιστή και εφαρμόζει τον τρόπο επίλυσης στις εκδόσεις που επηρεάζονται. Πρέπει να είστε μέλος του ρόλου sysadmin σε κάθε παρουσία του SQL Server, για να εφαρμόσετε τον τρόπο επίλυσης. Αν δεν διαθέτετε λογαριασμό Windows που να είναι μέλος του ρόλου sysadmin σε όλους τους διακομιστές που εκτελούν SQL Server και επηρεάζονται, ίσως να πρέπει να εκτελέσετε αυτήν τη δέσμη ενεργειών από πολλαπλούς λογαριασμούς. Στον Windows Server 2008 και στα Windows Vista, αν χρησιμοποιείτε λογαριασμό διαχειριστή των Windows που είναι μέλος του ρόλου sysadmin, πρέπει να εκτελέσετε αυτήν τη δέσμη ενεργειών από μια γραμμή εντολών με αυξημένα δικαιώματα:
'*************************************************************************************
'Περιγραφή: Αυτή η δέσμη ενεργειών επαναλαμβάνεται σε όλες τις παρουσίες του SQL Server που εκτελούνται
'            και αρνείται δικαιώματα εκτέλεσης στο sp_replwritetovarbin σε δημόσιους χρήστες, σε όλες
'            τις εκδόσεις που επηρεάζονται.
'            Ο ΚΩΔΙΚΑΣ ΑΥΤΟΣ ΠΑΡΕΧΕΤΑΙ ΩΣ ΤΡΟΠΟΣ ΕΠΙΛΥΣΗΣ ΚΑΙ ΔΕΝ ΠΡΕΠΕΙ ΝΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΣΕ ΠΕΡΙΠΤΩΣΗ
'            ΠΑΡΟΧΗΣ ΚΑΙ ΕΓΚΑΤΑΣΤΑΣΗΣ ΜΙΑΣ ΕΝΗΜΕΡΩΜΕΝΗΣ ΕΚΔΟΣΗΣ ΑΣΦΑΛΕΙΑΣ.
'*************************************************************************************

OPTION EXPLICIT
ON ERROR RESUME NEXT

' Constant values
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: No instances are present."
        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 "ERROR: Could not apply the workaround on " + sInstances(i,0) + "." + vbCRLF
            VBMain = EXIT_FAILURE
        End If
    Next
	
    WScript.Echo "INFO: Completed processing all the running SQL instances."
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 "ERROR:Failed to read SQL instances installed on the machine."
        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 "ERROR:Failed to read SQL instances installed on the machine."
            Exit Function
        End If
    End If

    If IsEmptyNull(sInstances1) AND IsEmptyNull(sInstances2) Then 
        WScript.Echo "INFO: No instances present."
        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

    ' Initialize return value
    ApplyFix = FALSE
    
    strConn = "Provider=sqloledb;Initial Catalog=master;Integrated Security=SSPI;Data Source=" + strServerName + ";"
    ' Error checking is intentionally left to keep the code short
    Set objConn = CreateObject("ADODB.Connection")
    Set objCmd = CreateObject("ADODB.Command")
    Set objCmd1 = CreateObject("ADODB.Command")
    
    ' Open a Connection to the master Database
    objConn.Open strConn 
    If ErrorOccurred("Error: Could not connect to " + strInstance) Then
        Set objConn = Nothing
        Exit Function
    End If

    ' Validate the version before applying the fix
    strCommand = "select SERVERPROPERTY('ProductVersion') as version, SERVERPROPERTY('productlevel') as productlevel"
    objCmd.ActiveConnection = objConn
    objCmd.CommandType = adCmdText
    objCmd.CommandText = strCommand
    	
    Set objRS = objCmd.Execute()
    If ErrorOccurred("ERROR: Could not execute """ + strCommand + """ on " + strInstance) = TRUE Then
        objConn.Close()
        Set objConn = Nothing
        ApplyFix = FALSE
        Exit Function   
    End If

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

    bApplyFix = FALSE
    ' Apply the workaround only for SQL 2000 and SQL 2005 (RTM, SP1 and SP2) versions
    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 = "deny execute on sp_replwritetovarbin to public"
        objCmd1.ActiveConnection = objConn
        objCmd1.CommandType = adCmdText
        objCmd1.CommandText = strCommand
        Set objRS1 = objCmd1.Execute()
        If ErrorOccurred("ERROR: Could not execute """ + strCommand + """ on " + strInstance) = FALSE Then
            WScript.Echo "INFO: Successfully applied the workaround on " + strInstance + " (" + strBuildVersion + ")." + vbCRLF
            ApplyFix = TRUE
        End If
    Else
        WScript.Echo "INFO: Skipping collecting information for " + strInstance + " (" + strBuildVersion + ") as this instance is not vulnerable." + 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

    'Connect to WMI and get an object to STDREGPROV class.
    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 ("ERROR: Could not connect to WMI namespace " + DEFAULTNAMESPACE) Then
        GetRegValue = FALSE
        Exit Function
    End If 

    lRc = 0
    Select Case iValueType
        ' We only care about 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 "ERROR: 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")

    ' Query Cluster service
    Set objClusters = objServices.ExecQuery ("select * from win32_service where 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
    
    ' If we reach here that means the machine is a clustered node.
    ' So lets query registry to determine whether the SQL instance is clustered or not.
    ' For SQL 2000 query the following value
    ' 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

    ' Lets try querying the registry value for 2005/2008 instances
    '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
        ' If this key doesnt exist, then return back as a SQL 2000 local instance
        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
Για περισσότερες πληροφορίες σχετικά με το CScript.exe, επισκεφτείτε την ακόλουθη τοποθεσία Web της Microsoft:
http://technet.microsoft.com/en-us/library/bb490887.aspx
Σημείωση Συνιστούμε να μην χρησιμοποιήσετε αυτήν τη δέσμη ενεργειών αν έχει παρασχεθεί μια ενημερωμένη έκδοση ασφαλείας και την έχετε εγκαταστήσει.

ΓΝΩΣΤΑ ΘΕΜΑΤΑ ΠΟΥ ΕΝΔΕΧΕΤΑΙ ΝΑ ΠΡΟΚΥΨΟΥΝ ΟΤΑΝ ΕΚΤΕΛΕΙΤΕ ΑΥΤΗΝ ΤΗ ΔΕΣΜΗ ΕΝΕΡΓΕΙΩΝ

Θέμα 1

Κατά την εκτέλεση της δέσμης ενεργειών, λαμβάνετε το ακόλουθο μήνυμα σφάλματος:
ΣΦΑΛΜΑ: Δεν ήταν δυνατή η εκτέλεση "άρνησης εκτέλεσης στο sp_replwritetovarbin σε δημόσιους χρήστες" στο <όνομα_παρουσίας>
ΣΦΑΛΜΑ: 0x-2147217900 - Δεν είναι δυνατή η εύρεση του αντικειμένου 'sp_replwritetovarbin', επειδή δεν υπάρχει ή επειδή δεν έχετε δικαίωμα.
ΣΦΑΛΜΑ: Δεν ήταν δυνατή η εφαρμογή του τρόπου επίλυσης στο <όνομα_παρουσίας>.

Αιτία 1

Αυτό το μήνυμα σφάλματος εμφανίζεται αν δεν διαθέτετε τα δικαιώματα που απαιτούνται για να εφαρμόσετε την αλλαγή. Αυτό το μήνυμα σφάλματος υποδεικνύει ότι καταφέρατε να συνδεθείτε με επιτυχία στην παρουσία "<όνομα_παρουσίας>".

Το μήνυμα σφάλματος αυτό εμφανίζεται συνήθως στον SQL Server Express, στον οποίο η ομάδα "Built-In\Users" συνδέεται από προεπιλογή στη βάση δεδομένων. Ωστόσο, η ομάδα αυτή δεν είναι μέλος του ρόλου sysadmin.

Αυτό το μήνυμα σφάλματος μπορεί να εμφανιστεί επίσης αν διακόψατε τη διαδικασία sp_replwritetovarbin. Αυτή ήταν η σύσταση της αναφοράς ενός άλλου κατασκευαστή. Δεν συνιστούμε τη διακοπή της αποθηκευμένης διαδικασίας. Αντίθετα, συνιστούμε την εφαρμογή της εξής προτεινόμενης αντιμετώπισης.

Προτεινόμενη αντιμετώπιση 1

Βεβαιωθείτε ότι ο λογαριασμός στον οποίο συνδέεστε είναι μέλος του ρόλου sysadmin σε αυτήν την παρουσία της βάσης δεδομένων. Αν ο λογαριασμός δεν είναι μέλος, είτε προσθέστε τον χρήστη με το λογαριασμό του οποίου συνδέεστε στο ρόλο sysadmin είτε χρησιμοποιήστε το λογαριασμό άλλου χρήστη. Στον SQL Server 2005 και τις παλιότερες εκδόσεις, η ομάδα "Built-in\Administrators" είναι από προεπιλογή μέλος του ρόλου sysadmin. Όταν εκτελείτε αυτήν τη δέσμη ενεργειών στα Windows Vista ή στον Windows Server 2008, βεβαιωθείτε ότι η εκτέλεση γίνεται από μια γραμμή εντολών με αυξημένα δικαιώματα.

Θέμα 2

Αν εκτελείτε αυτήν τη δέσμη ενεργειών στον SQL Server 2005, λαμβάνετε το ακόλουθο μήνυμα σφάλματος:
Σφάλμα: Δεν ήταν δυνατή η σύνδεση στο <όνομα_παρουσίας>
ΣΦΑΛΜΑ: 0x-2147217843 - Η σύνδεση του χρήστη '<χρήστης>' απέτυχε.
ΣΦΑΛΜΑ: Δεν ήταν δυνατή η εφαρμογή του τρόπου επίλυσης στο <όνομα_παρουσίας>.

Αιτία 2

Αυτό το μήνυμα σφάλματος εμφανίζεται αν δεν καταφέρατε να συνδεθείτε στην παρουσία "<όνομα_παρουσίας>" παρόλο που η συγκεκριμένη παρουσία υπάρχει.

Το μήνυμα σφάλματος αυτό εμφανίζεται συνήθως όταν συνδέεστε σε παρουσίες του Windows Internal Database ή του Microsoft SQL Server 2000 Desktop Edition (Windows). Συνήθως, κανένας λογαριασμός χρήστη δεν συνδέεται με αυτές τις βάσεις δεδομένων.

Προτεινόμενη αντιμετώπιση 2

Βεβαιωθείτε ότι ο λογαριασμός που χρησιμοποιείτε για την εκτέλεση της δέσμης ενεργειών μπορεί να συνδεθεί στη βάση δεδομένων και ότι είναι μέλος του ρόλου sysadmin.

Δεν συνιστούμε την προσθήκη μεμονωμένων χρηστών στις βάσεις δεδομένων του Windows Internal Database και του Microsoft SQL Server 2000 Desktop Edition (Windows). Αν το κάνετε, οι χρήστες που προσθέτετε ενδέχεται να παρέμβουν στην κανονική λειτουργία αυτών των βάσεων δεδομένων. Σε αυτήν την περίπτωση, βεβαιωθείτε ότι συνδέεστε από ένα λογαριασμό που είναι μέλος του ρόλου sysadmin. Η ομάδα "Built-in\Administrators" στα Windows είναι συνήθως μέλος του ρόλου sysadmin από προεπιλογή στον SQL Server 2005 και τις προηγούμενες εκδόσεις. Όταν εκτελείτε αυτήν τη δέσμη ενεργειών στα Windows Vista ή στον Windows Server 2008, βεβαιωθείτε ότι την εκτελείτε από μια γραμμή εντολών με αυξημένα δικαιώματα.

Θέμα 3

Ίσως να παρατηρήσετε την παρουσία μιας βάσης δεδομένων με το όνομα MICROSOFT##SSEE. Όμως, αυτήν τη βάση δεδομένων δεν την έχετε εγκαταστήσει εσείς.

Αιτία 3

Αυτή η βάση δεδομένων είναι η Windows Internal Database, γνωστή επίσης και ως "SQL Server Embedded Edition" ή, άλλες φορές, ως "Windows Internal Database" ή "Microsoft SQL Server 2000 Desktop Edition (Windows)". Εγκαθίσταται μαζί με ορισμένα προϊόντα της Microsoft, συμπεριλαμβανομένων των υπηρεσιών SharePoint Services.

Προτεινόμενη αντιμετώπιση 3

Η δέσμη ενεργειών του τρόπου επίλυσης έχει σχεδιαστεί για να λειτουργεί μαζί με το Windows Internal Database. Εσείς δεν χρειάζεται να κάνετε καμία ενέργεια.

Ορισμένες εφαρμογές δεν καταργούν το Windows Internal Database κατά την κατάργηση της εγκατάστασής τους. Για περισσότερες πληροφορίες σχετικά με τον τρόπο κατάργησης του Windows Internal Database, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
920277 Το Windows Internal Database δεν παρουσιάζεται στο εργαλείο "Προσθαφαίρεση προγραμμάτων" και δεν καταργείται κατά την κατάργηση των Windows SharePoint Services 3.0 από τον υπολογιστή. (US)

Θέμα 4

Κατά την εκτέλεση της δέσμης ενεργειών, λαμβάνετε το ακόλουθο μήνυμα σφάλματος:
Σφάλμα: Δεν ήταν δυνατή η σύνδεση στο .\<όνομα_παρουσίας>
ΣΦΑΛΜΑ: 0x-2147467259 - [DBNETLIB][ConnectionOpen (Connect()).]Ο SQL Server δεν υπάρχει ή δεν επιτρέπεται η πρόσβαση

Αιτία 4

Αυτό το μήνυμα σφάλματος εμφανίζεται αν ισχύουν οι ακόλουθες συνθήκες:
  • Έχετε εγκαταστήσει μια έκδοση SQL Server 2000 32-bit σε ένα λειτουργικό σύστημα x64-bit.
  • Έχετε εγκαταστήσει στον υπολογιστή μια έκδοση SQL Server 2005 ή SQL Server 2008 64-bit.
Αυτό το μήνυμα σφάλματος προκύπτει όταν η δέσμη ενεργειών χρησιμοποιεί την έκδοση 64-bit του αρχείου dbmslpcn.dll. Αυτή η έκδοση δεν μπορεί να επικοινωνήσει με τις παρουσίες WoW του SQL Server 2000.

Προτεινόμενη αντιμετώπιση 4

Χρησιμοποιήστε την έκδοση 32-bit του αρχείου cscript.exe από το φάκελο %WINDOWS%\SysWOW64 για να ξεκινήσετε τη δέσμη ενεργειών. Με αυτόν τον τρόπο, φορτώνεται η έκδοση 32-bit του αρχείου dbmslpcn.dll, η οποία μπορεί να εντοπίσει παρουσίες WoW.

Αναφορές

Για περισσότερες πληροφορίες σχετικά με τον προσδιορισμό της έκδοσης του SQL Server, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
321185 Προσδιορισμός της έκδοσης του SQL Server

Περισσότερες πληροφορίες

Ο ακόλουθος πίνακας παραθέτει σημαντικές τεχνικές αναθεωρήσεις για αυτό το άρθρο. Ο αριθμός αναθεώρησης και η τελευταία ημερομηνία αναθεώρησης αυτού του άρθρου μπορεί να υποδεικνύουν συντακτικές ή δομικές αναθεωρήσεις δευτερεύουσας σημασίας σε αυτό το άρθρο, οι οποίες δεν περιλαμβάνονται στον πίνακα.
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
ΗμερομηνίαΑναθεωρήσεις
31 Δεκεμβρίου 2008Περιλαμβάνει μια ενημερωμένη δέσμη ενεργειών που εντοπίζει παρουσίες συμπλέγματος ανακατεύθυνσης στον SQL Server.
30 Δεκεμβρίου 2008Περιλαμβάνει μια ενημερωμένη δέσμη ενεργειών που εντοπίζει εκδόσεις 32-bit του SQL Server, οι οποίες εκτελούνται σε εκδόσεις 64-bit των Windows.

Ιδιότητες

Αναγν. άρθρου: 961040 - Τελευταία αναθεώρηση: Τρίτη, 6 Ιανουαρίου 2009 - Αναθεώρηση: 3.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Windows Internal Database
  • Microsoft SQL Server 2005 Service Pack 2 στις ακόλουθες πλατφόρμες
    • Microsoft SQL Server 2005 Standard Edition
    • Microsoft SQL Server 2005 Enterprise Edition
    • Microsoft SQL Server 2005 Express Edition
    • Microsoft SQL Server 2005 Express Edition with Advanced Services
    • Microsoft SQL Server 2005 Enterprise X64 Edition
    • Microsoft SQL Server 2005 Standard X64 Edition
    • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Service Pack 4
Λέξεις-κλειδιά: 
kbpubtypekc kbfix kbbug kbsecvulnerability kbsecbulletin kbsecurity KB961040

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com