it-swarm.com.de

SQL Server: Anmeldung erfolgreich, aber "Auf die Datenbank [Datenbankname] kann nicht zugegriffen werden. (ObjectExplorer)"

Ich verwende Windows 8.1 und SQL Server 2012. 

Ich habe ein Betriebssystemkonto "Manoj" für den Zugriff auf SQL SERVER mit Windows-Authentifizierung verwendet . Vor kurzem habe ich mein Benutzerkonto "Manoj" des Betriebssystems gelöscht und ein neues Konto mit demselben Namen "Manoj" erstellt. 

Das System hat das neue Konto jedoch als "Manoj_2" übernommen. Diese Änderung hindert mich daran, auf die alten Datenbanken zuzugreifen, die ich erstellt habe. 

Es steht dass 

Die Datenbank [dbName] ist nicht zugänglich. (ObjectExplorer)

immer wenn ich versuche, auf eine der von mir erstellten früheren Datenbanken zuzugreifen.

Ich habe in SQL Server ein neues Login für "Manoj_2" mit Standard-DB als "Master" erstellt. Trotzdem bleibt das Problem bestehen.

Ich kann die DBs nicht trennen. Ich kann die DBs nicht erweitern. 

Hinweis: Im Betriebssystem habe ich Administratorrechte für das Konto "Manoj".

Bitte sagt mir jemand, was ich tun soll. entweder mit OS oder mit SQL Server 

35
Manoj Maximum

Für diese Situation müssen Sie im Einzelbenutzermodus eine Verbindung zur Datenbank herstellen.

Beim Starten von SQL Server im Einzelbenutzermodus kann jedes Mitglied der lokalen Gruppe der Administratoren des Computers eine Verbindung mit der Instanz von SQL Server als Mitglied der festen Serverrolle sysadmin herstellen.

Hier finden Sie Schritt-für-Schritt-Anweisungen , um dies zu tun.

Kurz gesagt, Sie müssen die sqlserver-Instanz mit den Parametern -m starten, nachdem Sie Sql Server Management Studio mit Windows-Authentifizierung gestartet haben.

Jetzt sind Sie ein sysadmin, weisen Ihrem Benutzer die sysadmin-Rolle zu, beenden Sie den Parameter -m, entfernen Sie ihn, und starten Sie den SQL-Server erneut.

28
Max

Wirklich dumme Lösung, aber ich füge sie hier hinzu, falls jemand von einer Google-Suche hierher kommt.

Ich hatte gerade den SQL-Dienst neu gestartet und erhielt diesen Fehler. In meinem Fall war es nur 10 Minuten zu warten, und es war wieder gut. Anscheinend ist dies der Fehler, den Sie erhalten, wenn es gerade gestartet wird. 

Das Problem ist, dass der Benutzer in der Datenbank ein "Orphan" ist. Dies bedeutet, dass dem Benutzer keine Anmelde-ID oder kein Kennwort zugeordnet ist. Dies gilt auch dann, wenn es eine Login-ID gibt, die dem Benutzer entspricht, da es eine GUID (in Microsoft-See als SID bezeichnet) gibt, die ebenfalls übereinstimmen muss.

Früher war dies ein Problem, das behoben werden musste, aber derzeit (SQL Server 2000, SP3) gibt es eine gespeicherte Prozedur, die das schwere Anheben übernimmt.

Alle diese Anweisungen sollten als Datenbankadministrator ausgeführt werden, wobei die wiederhergestellte Datenbank ausgewählt ist.

Stellen Sie zunächst sicher, dass dies das Problem ist. Hier werden die verwaisten Benutzer aufgelistet:

EXEC sp_change_users_login 'Report'

Wenn Sie bereits eine Login-ID und ein Kennwort für diesen Benutzer haben, korrigieren Sie dies, indem Sie Folgendes tun:

EXEC sp_change_users_login 'Auto_Fix', 'user'

Wenn Sie eine neue Login-ID und ein neues Passwort für diesen Benutzer erstellen möchten, korrigieren Sie dies, indem Sie Folgendes tun:

EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'

Dieser Text wurde erhalten unter http://www.fileformat.info/tip/Microsoft/sql_Orphan_user.htm im Dez-13-2017

5
dellasavia

This is caused when the user's default database is set to a database they don't have permissions or its offline.

Versuchen Sie einfach, den Benutzer erneut hinzuzufügen. Bitte sehen Sie hier auch.

2
Avinash Babu

Das hat mich zu diesem Problem geführt und wie ich es behoben habe:

Wiederherstellen meiner Datenbank in einer anderen SQL Server-Instanz aus einer .bak-Datei, die einen bereits vorhandenen Benutzer enthielt.

Es wurde wie üblich versucht, über meine App auf die wiederhergestellte Datenbank zuzugreifen, und zwar mit derselben Verbindungszeichenfolge, jedoch mit einer aktualisierten Serverinstanz.

Fehler empfangen.

Benutzer als DBowner gelöscht, dann mit genau denselben Anmeldeinformationen, Zuordnungen, Login usw. gelesen.

Konnte sich als Benutzer anmelden, nachdem er den Benutzer nach der Wiederherstellung gelesen hatte.

2
Rachael

Das hat es für mich behoben:

Use [dbName]
GO

EXEC sp_change_users_login 'Auto_Fix','Manoj', null, 'Manojspassword'
GO
1
Njal

Gehe zu 

Sicherheit >> Anmeldungen >> Klicken Sie mit der rechten Maustaste auf den Benutzer >> Eigenschaften >> 

Wechseln Sie in der linken Navigation zu >> Benutzerzuordnung >> Überprüfen Sie die Datenbank, und überprüfen Sie in "Datenbankrollenmitgliedschaft für: <>" in "db_owner" den Benutzer, bei dem das Problem auftritt.

PROBLEM GELÖST...

1
ingpedrorr

Ich hatte zwei Benutzer: Der eine hatte die Rolle des Sysadmin, der andere (der problematische) nicht.

Also habe ich mich mit dem anderen Benutzer angemeldet (Sie können einen neuen erstellen) und das Kontrollkästchen "sysadmin" in "Sicherheits" -> "Logins" -> "Rechtsklicken" auf Ihren SQL-Benutzernamen -> "Eigenschaften"> "Serverrollen" aktiviert -> Vergewissern Sie sich, dass das Kontrollkästchen 'sysadmin' mit dem Häkchen versehen ist.__ Drücken Sie OK und versuchen Sie, eine Verbindung mit dem neu geprüften Benutzer herzustellen.

0
laviki

Wenn Sie Sql Management Studio verwenden, starten Sie es einfach als Administrator.

Rechtsklick-> Als Administrator ausführen

0
kmiloangel

In meinem Fall hat es funktioniert, als ich SQL Server Management Studio mit Administratorberechtigungen geöffnet hatte und mit der rechten Maustaste auf die Datenbank geklickt und " Online gehen " oder ähnliches ausgewählt habe.

0
Samurai Jack

Mein Problem wurde durch einen Neustart des MS SQL-Serverdienstes behoben.

0
Shakti

Ich habe ein ähnliches Problem festgestellt, nachdem ich einige Jobs der Masseneinfügung durch ein Python-Skript auf einem separaten Computer und einem anderen Benutzer als dem, den ich mich bei SSMS anmelde, ausgeführt habe.

Wenn der Python-Kernel (oder möglicherweise eine andere Verbindung) mitten in einem Bulk-Insert-Job unterbrochen wird, ohne das Durcheinander ordnungsgemäß zu "bereinigen", kann es auf der SQL Server-Seite zu einer Art Hängen von Benutzeranmeldeinformationen und Sperren kommen . Weder der Neustart des Dienstes noch die gesamte Maschine funktionierten für mich. 

Die Lösung für mich war, die DB offline und online zu nehmen. Im SQL Server Management Studio ist dies ein Rechtsklick auf DB> Aufgaben> Offline schalten und dann Rechtsklicken auf DB> Aufgaben> Online schalten.

0
Kocas

Ich hatte ein ähnliches Problem. Ich musste einen neuen Benutzer mit dem von mir benötigten Namen erstellen. In Ihrem Fall sollten Sie einen solchen erstellen:

USE [master]

GO

/****** Object:  Login [Manoj_2]    Script Date: 9/5/2019 12:16:14 PM ******/
CREATE LOGIN [Manoj_2] FROM WINDOWS WITH DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[us_english]

GO

ALTER SERVER ROLE [sysadmin] ADD MEMBER [Manoj_2]
GO
0
Junior Grão

In meinem Fall reichte der Neustart des SQL Server-Dienstes aus, um das Problem zu beheben.

0
Tomas Kubes

In meinem Fall musste ich die Anwendung einfach mit "Als Administrator ausführen" starten, um auf alles zugreifen zu können. Ansonsten würde ich den von Ihnen genannten Fehler erhalten.

0
Amalgovinus

Bitte probieren Sie dieses Skript aus. Dieses Skript prüft die aktiven Sitzungen der Datenbank und beendet sie, sodass Sie die Datenbank wieder online stellen können.

 CREATE TABLE #temp_sp_who2
        (
          SPID INT,
          Status VARCHAR(1000) NULL,
          Login SYSNAME NULL,
          HostName SYSNAME NULL,
          BlkBy SYSNAME NULL,
          DBName SYSNAME NULL,
          Command VARCHAR(1000) NULL,
          CPUTime INT NULL,
          DiskIO INT NULL,
          LastBatch VARCHAR(1000) NULL,
          ProgramName VARCHAR(1000) NULL,
          SPID2 INT
          , rEQUESTID INT NULL --comment out for SQL 2000 databases

        )


    INSERT  INTO #temp_sp_who2
    EXEC sp_who2


    declare @kill nvarchar(max)= ''
    SELECT  @kill = @kill+ 'kill '+convert(varchar,spid) +';'
    FROM    #temp_sp_who2
    WHERE   DBName = 'databasename'

    exec sp_executesql @kill


  ALTER DATABASE DATABASENAME SET ONLINE WITH IMMEDIATE ROLLBACK
0
akhila vangala

Problem: Auf die Datenbank [Datenbankname] kann nicht zugegriffen werden. (ObjectExplorer) hat den Fehler beim Erweitern der Datenbank erhalten. 

Lösung: Löschen Sie die Datenbank> Drop Option Fügen Sie die Datenbank erneut mit der MDF-Datei unter dem Ordner mssql data an

0
aimTheMoon