PRB: Το θέμα "Αντιμετώπιση προβλημάτων"ορφανό "χρήστες" στα ηλεκτρονικά βιβλία είναι ελλιπής

Συμπτώματα

Όταν επαναφέρετε ένα αντίγραφο ασφαλείας της βάσης δεδομένων σε άλλο διακομιστή, ενδέχεται να αντιμετωπίσετε ένα ζήτημα με ορφανούς χρήστες. Στο θέμα Αντιμετώπιση προβλημάτων ορφανή χρηστών στα ηλεκτρονικά βιβλία του SQL Server δεν περιγράφουν τα ακριβή βήματα για την αντιμετώπιση αυτού του ζητήματος.

Αυτό το άρθρο περιγράφει πώς μπορείτε να αντιμετωπίσετε ορφανούς χρήστες.

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην αρχή αυτού του άρθρου.

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

Παρόλο που η σύνδεση όρων και χρήστη χρησιμοποιούνται συχνά ως ισοδύναμοι, είναι πολύ διαφορετικά. Μια σύνδεση που χρησιμοποιείται για τον έλεγχο ταυτότητας χρήστη και ένα λογαριασμό χρήστη της βάσης δεδομένων χρησιμοποιείται για την επικύρωση πρόσβασης και δικαιώματα βάσης δεδομένων. Συνδέσεις συσχετίζονται σε χρήστες με το αναγνωριστικό ασφαλείας (SID). Μια σύνδεση είναι απαραίτητες για την πρόσβαση στο διακομιστή SQL Server. Η διαδικασία επαλήθευσης ότι μια συγκεκριμένη σύνδεση είναι έγκυρη ονομάζεται "Έλεγχος ταυτότητας". Αυτή τη σύνδεση πρέπει να συσχετίζονται με ένα χρήστη της βάσης δεδομένων SQL Server. Μπορείτε να χρησιμοποιήσετε το λογαριασμό χρήστη για τον έλεγχο των δραστηριοτήτων που έχουν πραγματοποιηθεί στη βάση δεδομένων. Αν δεν υπάρχει λογαριασμός χρήστη βρίσκεται σε μια βάση δεδομένων για μια συγκεκριμένη σύνδεση, ο χρήστης που χρησιμοποιεί αυτή η σύνδεση δεν είναι δυνατή πρόσβαση στη βάση δεδομένων ακόμη και αν ο χρήστης μπορεί να είναι σε θέση να συνδεθείτε με το διακομιστή SQL Server. Μία εξαίρεση σε αυτήν την περίπτωση είναι όταν η βάση δεδομένων περιέχει το λογαριασμό χρήστη "Επισκέπτης". Μια σύνδεση που δεν διαθέτει ένα λογαριασμό χρήστη που συσχετίζονται αντιστοιχίζεται στο χρήστη επισκέπτη. Αντίθετα, εάν υπάρχει ένας χρήστης της βάσης δεδομένων, αλλά δεν υπάρχει καμία σύνδεση που σχετίζονται, ο χρήστης δεν είναι σε θέση να συνδεθεί στο διακομιστή SQL Server.


Κατά την επαναφορά μιας βάσης δεδομένων σε διαφορετικό διακομιστή περιέχει ένα σύνολο χρηστών και δικαιωμάτων, αλλά μπορεί να μην υπάρχει οποιαδήποτε αντίστοιχη συνδέσεις ή τις συνδέσεις ενδέχεται να μην σχετίζονται με τους ίδιους χρήστες. Αυτή η κατάσταση είναι γνωστή ως έχουν "ορφανή χρήστες."

Αντιμετώπιση προβλημάτων με ορφανούς χρήστες

Όταν επαναφέρετε ένα αντίγραφο ασφαλείας της βάσης δεδομένων σε άλλο διακομιστή, ενδέχεται να αντιμετωπίσετε ένα ζήτημα με ορφανούς χρήστες. Το ακόλουθο σενάριο παρουσιάζει το πρόβλημα και σας δείχνει πώς να την επιλύσετε.
  1. Προσθήκη μιας σύνδεσης στην κύρια βάση δεδομένων και να καθορίσετε την προεπιλεγμένη βάση δεδομένων ως Northwind:
    Use master go sp_addlogin 'test', 'password', 'Northwind'
  2. Εκχώρηση δικαιωμάτων πρόσβασης στο χρήστη που δημιουργήσατε:
    Use Northwind go sp_grantdbaccess 'test'
  3. Δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων.
    BACKUP DATABASE NorthwindTO DISK = 'C:\MSSQL\BACKUP\Northwind.bak'

  4. Επαναφέρετε τη βάση δεδομένων σε διαφορετικό διακομιστή SQL Server:
    RESTORE DATABASE NorthwindFROM DISK = 'C:\MSSQL\BACKUP\Northwind.bak'

    Τα δεδομένα που επαναφέρατε περιέχει ένα χρήστη με το όνομα "δοκιμή", χωρίς μια αντίστοιχη σύνδεση, που έχει ως αποτέλεσμα "δοκιμή" είναι ορφανή.
  5. Τώρα, για τον εντοπισμό ορφανούς χρήστες, εκτελέστε αυτόν τον κώδικα:
    Use Northwind go sp_change_users_login 'report'
    Το αποτέλεσμα εμφανίζει όλες τις συνδέσεις, που έχουν ασυμφωνία μεταξύ των εγγραφών στον πίνακα συστήματος sysusers της βάσης δεδομένων Northwind, και ο sysxlogins πίνακας συστήματος στην κύρια βάση δεδομένων.

Βήματα για την επίλυση ορφανούς χρήστες

  1. Εκτελέστε την ακόλουθη εντολή για το ορφανό χρήστη από το προηγούμενο βήμα:
    Use Northwindgo
    sp_change_users_login 'update_one', 'test', 'test'

    Αυτό relinks server σύνδεση "δοκιμή" με το Northwind βάση δεδομένων χρήστη "δοκιμή". Την sp_change_users_login αποθηκευμένη διαδικασία μπορεί επίσης να εκτελέσει μια ενημέρωση όλων των ορφανών χρηστών με την παράμετρο "auto_fix", αλλά αυτό δεν συνιστάται επειδή ο SQL Server επιχειρεί να αντιστοιχίσει χρήστες και συνδέσεις με βάση το όνομα. Για τις περισσότερες περιπτώσεις αυτό λειτουργεί; Ωστόσο, εάν το λάθος είναι σύνδεση με το χρήστη, ένας χρήστης μπορεί να έχει εσφαλμένα δικαιώματα.
  2. Μετά την εκτέλεση του κώδικα στο προηγούμενο βήμα, ο χρήστης μπορεί να πρόσβαση στη βάση δεδομένων. Ο χρήστης, στη συνέχεια, ενδέχεται να αλλάξει τον κωδικό πρόσβασης με το sp_password αποθηκευμένη διαδικασία:
    Use master go
    sp_password NULL, 'ok', 'test'

    Αυτή η αποθηκευμένη διαδικασία δεν μπορεί να χρησιμοποιηθεί για τους λογαριασμούς ασφαλείας Microsoft Windows NT. Οι χρήστες που συνδέονται σε ένα διακομιστή SQL Server μέσω λογαριασμό δικτύου των Windows NT που ελέγχονται από τα Windows NT, κατά συνέπεια, τους κωδικούς πρόσβασης μπορεί να αλλάξει μόνο στα Windows NT.


    Μόνο τα μέλη του ρόλου sysadmin, να αλλάξετε τον κωδικό πρόσβασης για τη σύνδεση του χρήστη.

Αναφορές

Για πρόσθετες πληροφορίες σχετικά με τον τρόπο επίλυσης ζητημάτων δικαιωμάτων κατά τη μετακίνηση μιας βάσης δεδομένων μεταξύ διακομιστών, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

240872 INF: πώς να επιλύσετε δικαιώματα όταν μια βάση δεδομένων θεμάτων είναι η μετακίνηση μεταξύ διακομιστών SQL
Ιδιότητες

Αναγνωριστικό άρθρου: 274188 - Τελευταία αναθεώρηση: 11 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια