Datenbankbenutzer und Serveranmeldungen sowie die Zuordnung zwischen ihnen

8

Ich habe eine Instanz von SQL Server 2008 R2 Express Edition zu Hause und eine andere auf einem Server in einem Client-Gebäude, mit dem ich eine Anwendung mit Access als Front-End entwickle. Diese Anwendung verfügt über 5 separate Anmeldungen, die ich in der Verbindungszeichenfolge verwenden kann (basierend auf der Zugriffsgruppe, in der sich der Benutzer befindet). Die Heiminstanz verfügt über mehrere Datenbanken, von denen einige nichts mit diesen Anwendungen zu tun haben

Ich habe die Anmeldungen in jeder Instanz im Laufe der Zeit manuell erstellt (und wahrscheinlich in einer anderen Reihenfolge).

Ich hoffe, dass ich (mehr als einmal) ein Backup von meinem Heimcomputer der Datenbank, an der ich arbeite, erstellen und es mithilfe der Wiederherstellung auf die Instanz beim Client laden kann, indem ich nur die Dateien im Backup-Set auf den tatsächlichen Wert verschiebe Dateien, die während des Wiederherstellungsprozesses auf diesem Server verwendet werden. Das Stück, das ich nicht verstehe, ist die Zuordnung zwischen dem Datenbankbenutzer und dem Login.

Ich hatte gedacht, dass die Korrespondenz des Namens ausreichen sollte, aber als ich versuchte, ein Problem zu beheben, bei dem Benutzer der wiederhergestellten Datenbank nicht der Serveranmeldung zugeordnet zu sein schienen, stieß ich auf die Anweisung Transact-SQL ALTER USER und insbesondere sein Verweis auf die Verwendung von WITH LOGIN und einige Diskussionen über eine "SID".

Da (ich nehme an) die Server-Anmeldenamen in jeder Instanz unterschiedliche SIDs haben, bedeutet dies, dass ich nach dem Laden einer Sicherung zwischen Instanzen die Zuordnung mit einer Reihe von ALTER USER WITH LOGIN-Befehlen erneut verbinden muss?

akc42
quelle

Antworten:

9

Loginsoder Serveranmeldungen sind auf SQL Server-Ebene und database userauf Datenbankebene vorhanden. Sie müssen nicht den gleichen Namen haben, müssen es aber im Allgemeinen tun. In einer Instanz kann ein Datenbankbenutzer ohne eine entsprechende SQL Server-Anmeldung nicht ordnungsgemäß funktionieren.

Angenommen , Sie haben eine Instanz: instanceA mit einem Server Login userA auf Ihrem Computer. Sie können diesen Server-AnmeldebenutzerA einem Datenbankbenutzer zuordnen : userA für eine Datenbank DB_A . Sie heißen beide userA , aber einer ist der Server loginund einer ist der database user. Der Datenbankbenutzer: userA befindet sich in DB_A . Wenn Sie die Sicherung und DB_A von restore instanceA auf einen anderen instanceB , die Datenbankbenutzer: userA wird verschoben, aber die Server - Login: userA bleibt auf instanceA. Sie können die Anmeldungen von Instanz A nach Instanz B verschiebensp_help_revlogin (Klicken Sie hier, um die KB-Seite zu überprüfen) .

Wenn Sie zuvor den SQL Server-Anmeldebenutzer A auf Instanz B erstellt haben , versucht SQL, diese Anmeldung dem Datenbankbenutzer Benutzer A zuzuordnen, wenn DB_A von Instanz A auf Instanz B wiederhergestellt wird. Wenn dies fehlschlägt, können Sie die fehlerhaften Zuordnungen mithilfe der Prozedur sp_change_users_login (Klicken für BOL-Link) beheben. Hoffe das klärt die Dinge auf.

Stanley Johns
quelle
Danke - ich glaube ich hatte die richtigen Konzepte, aber die sp_help_revlogin und sp_change_users_login und new und ich werde mir helfen. Ich werde mehr erforschen. Danke
akc42