Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet

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

ΕΙΣΑΓΩΓΗ
Η Microsoft έχει κυκλοφορήσει ένα συμβουλευτικό δελτίο ασφαλείας σχετικά με μια ευπάθεια στον Microsoft SQL Server, η οποία θα μπορούσε να επιτρέψει απομακρυσμένη εκτέλεση κώδικα. Το συμβουλευτικό δελτίο ασφαλείας περιέχει πρόσθετες πληροφορίες που σχετίζονται με την ασφάλεια. Για να προβάλετε το συμβουλευτικό δελτίο ασφαλείας, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web: Αυτό το άρθρο περιλαμβάνει μια δέσμη ενεργειών 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 EXPLICITON ERROR RESUME NEXT' Constant valuesCONST EXIT_SUCCESS       = 0CONST EXIT_FAILURE       = 1CONST EXIT_NOINSTANCES   = -1CONST DEFAULTNAMESPACE   = "root\default"CONST STDREGPROV         = "stdregprov"CONST HKEY_LOCAL_MACHINE = &H80000002CONST REG_MULTI_SZ       = 7CONST REG_SZ             = 1CONST adCmdText          = 1Call 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 FunctionFunction 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 = TRUEEnd FunctionFunction 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 = NothingEnd FunctionPrivate 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 = NothingEnd FunctionFunction 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 = TRUEEnd FunctionPrivate 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 IfEnd FunctionFunction 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 IfEnd FunctionFunction 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 FunctionFunction 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 ifEnd Function
Για περισσότερες πληροφορίες σχετικά με το CScript.exe, επισκεφτείτε την ακόλουθη τοποθεσία Web της Microsoft: Σημείωση Συνιστούμε να μην χρησιμοποιήσετε αυτήν τη δέσμη ενεργειών αν έχει παρασχεθεί μια ενημερωμένη έκδοση ασφαλείας και την έχετε εγκαταστήσει.
ΓΝΩΣΤΑ ΘΕΜΑΤΑ ΠΟΥ ΕΝΔΕΧΕΤΑΙ ΝΑ ΠΡΟΚΥΨΟΥΝ ΟΤΑΝ ΕΚΤΕΛΕΙΤΕ ΑΥΤΗΝ ΤΗ ΔΕΣΜΗ ΕΝΕΡΓΕΙΩΝ

Θέμα 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.
ενημερωμένη έκδοση ενημερωμένη_έκδοση_κώδικα_ασφαλείας ενημερωμένη_έκδοση_ασφαλείας ασφάλεια σφάλμα ελάττωμα ευπάθεια κακόβουλος εισβολέας εκμετάλλευση μητρώο χωρίς_έλεγχο_ταυτότητας buffer υπέρβαση υπερχείλιση ειδικά_διαμορφωμένο πεδίο_εφαρμογής ειδικά_κατασκευασμένο άρνηση_εξυπηρέτησης
Ιδιότητες

Αναγνωριστικό άρθρου: 961040 - Τελευταία αναθεώρηση: 01/06/2009 15:41:05 - Αναθεώρηση: 3.0

Windows Internal Database, Microsoft SQL Server 2005 Service Pack 2, 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
Σχόλια
m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m); s track by $index -->
España - Español
Paraguay - Español
Venezuela - Español
0&did=1&t=">p;did=1&t=">Script" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" >ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");