Подтвердить что ты не робот

SQL Server: успех входа в систему, но "База данных [dbName] недоступна. (ObjectExplorer)"

Я использую Windows 8.1 и SQL Server 2012.

Я использовал учетную запись ОС "Manoj" для доступа к SQL SERVER с проверкой подлинности Windows. Недавно я удалил свою учетную запись "Manoj" ОС и создал новую учетную запись с тем же именем "Manoj".

Но система взяла новую учетную запись как "Manoj_2". Это изменение не позволяет мне получить доступ к старым базам данных, которые я создал.

В нем говорится, что

База данных [dbName] недоступна. (ObjectExplorer)

всякий раз, когда я пытаюсь получить доступ к любому из предыдущих созданных мной БД.

Я использовал для создания нового входа в SQL Server для "Manoj_2", при этом DB по умолчанию был "мастером". Но проблема все еще сохраняется.

Я не могу отсоединить БД. Я не могу расширить БД.

Примечание. В ОС у меня есть права администратора для учетной записи "Manoj".

Пожалуйста, скажите мне, что делать? либо с ОС, либо с SQL Server

4b9b3361

Ответ 1

Для этой ситуации вам необходимо подключиться к базе данных в режиме с одним пользователем.

Запуск SQL Server в однопользовательском режиме позволяет любому члену локальной локальной группы компьютеров подключиться к экземпляру SQL Server в качестве члена фиксированной роли сервера sysadmin.

Здесь вы можете найти пошаговую инструкцию.

Короче вы должны запустить экземпляр sqlserver с параметрами -m, после запуска Sql Server Management Studio с проверкой подлинности Windows.

Теперь вы sysadmin, назначьте роль sysadmin для своего пользователя, выйдите и удалите параметр -m и перезапустите сервер sql.

Ответ 2

Проблема в том, что пользователь в базе данных является "сиротой". Это означает, что нет идентификатора входа или пароля, связанного с пользователем. Это верно даже в том случае, если существует идентификатор входа в систему, соответствующий пользователю, поскольку существует также GUID (называемый SID на языке Microsoft), который также должен совпадать.

Раньше это было трудно исправить, но в настоящее время (SQL Server 2000, SP3) есть хранимая процедура, которая выполняет тяжелую работу.

Все эти инструкции должны выполняться администратором базы данных с выбранной восстановленной базой данных.

Во-первых, убедитесь, что это проблема. Это приведет к списку осиротевших пользователей:

EXEC sp_change_users_login 'Report'

Если у вас уже есть логин и пароль для этого пользователя, исправьте это, выполнив:

EXEC sp_change_users_login 'Auto_Fix', 'user'

Если вы хотите создать новый логин и пароль для этого пользователя, исправьте это, выполнив:

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

этот текст был получен в http://www.fileformat.info/tip/microsoft/sql_orphan_user.htm в Дез-13-2017

Ответ 3

Действительно глупое решение, но я добавлю его здесь, если кто-нибудь попадет сюда из поиска Google.

Я только что перезапустил службу SQL и получил эту ошибку, и в моем случае достаточно ждать 10 минут, и все было хорошо. Кажется, это ошибка, которую вы получаете, когда она только начинается.

Ответ 4

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

Просто попробуйте добавить user.Pleae посмотрите здесь.

Ответ 5

Вот что привело меня к этой проблеме и как я ее исправил:

Восстановил мою базу данных на другой экземпляр SQL-сервера из файла .bak, который включал существующего пользователя.

Пытался получить доступ к восстановленной базе данных из моего приложения, как обычно, используя ту же строку соединения, но обновленный экземпляр сервера.

Полученная ошибка.

Удаленный пользователь в качестве администратора базы данных, затем он считывается с точно такими же учетными данными, сопоставлениями, логином и т.д.

После входа в систему после входа в систему пользователь смог войти в систему как пользователь.

Ответ 6

Это исправлено для меня:

Use [dbName]
GO

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

Ответ 7

Перейдите к

Безопасность → Логины → Щелкните правой кнопкой мыши на пользователе → Свойства →

В левой части навигации перейдите к → Сопоставление пользователей → Проверьте базу данных и в разделе "Членство в роли базы данных для: < > " отметьте "db_owner" для пользователя, что у вас возникла проблема.

ПРОБЛЕМА РЕШЕНА...

Ответ 8

Я столкнулся с подобной проблемой после запуска нескольких заданий массовой вставки через скрипт Python на отдельном компьютере и от отдельного пользователя от того, который я регистрирую в SSMS.

Похоже, что если ядро Python (или, возможно, любое другое соединение) будет прервано в середине задания массовой вставки без надлежащей "очистки" путаницы, может произойти некоторое зависание, связанное с учетными данными пользователя и блокировками на стороне SQL Server., Ни перезапуск сервиса, ни вся машина у меня не работали.

Решение в моем случае состояло в том, чтобы перевести БД в автономный режим и онлайн. В SQL Server Management Studio щелкните правой кнопкой мыши БД> задачи> отключить, а затем щелкните правой кнопкой мыши БД> задачи> подключить к сети.

Ответ 9

Пожалуйста, попробуйте этот script.. Что это за script, он просматривает активные сеансы базы данных и убивает их, чтобы вы могли вернуть базу данных в онлайн.

 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

Ответ 10

В моем случае я просто должен был запустить приложение с "Запуск от имени администратора", чтобы получить доступ к чему-либо. В противном случае я получаю указанную вами ошибку.

Ответ 11

У меня было два пользователя: один, у которого была роль sysadmin, другая (проблемная) не делала.

Итак, я вошел в систему с другим пользователем (вы можете создать новый) и проверил ящик ckeck 'sysadmin' с: Security → Logins → Right ckick на вашем имени пользователя SQL → Свойства → Роли сервера → убедитесь, что флажок "sysadmin" имеет галочку. Нажмите OK и попробуйте подключиться к вновь зарегистрированному пользователю.

Ответ 12

Проблема: база данных [dbName] недоступна. (ObjectExplorer) получил ошибку при расширении базы данных.

Решение: Отключить базу данных > Вариант удаления Присоедините базу данных снова с файлом mdf в папке с данными mssql

Ответ 13

Если вы используете Sql Management Studio, просто запустите его как Администратор.

Щелкните правой кнопкой мыши- > Запуск от имени администратора

Ответ 14

В моем случае перезапуск службы SQL Server достаточно для решения проблемы.

Ответ 15

Моя проблема была решена путем перезапуска службы сервера MS SQL, просто.

Ответ 16

В моем случае это сработало, когда я открыл SQL Server Management Studio с учетными данными администратора и щелкнул правой кнопкой мыши базу данных и выбрал " Перейти в онлайн " или что-то в этом роде.

Ответ 17

У меня была похожая проблема, для меня мне пришлось создать нового пользователя с нужным мне именем, в вашем случае вы должны создать что-то вроде этого:

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

Ответ 18

Получите эту ошибку в следующих шагах:

  • Запустите "Отправить в автономном режиме".
  • "В автономном режиме" работает слишком долго, поэтому я закрыл это окно.
  • Тогда я получил эту ошибку.

Шаги для исправления:

  • Перейдите в "Монитор активности" и удалите все подключения к этому db. Тогда DB стал действительно автономным, и все в порядке.

Ответ 19

Я выполнил следующие шаги, и это сработало для меня:

1) подключитесь к SQL Server- > Security- > logins- > для поиска определенного пользователя- > Свойства- > сервера Роли- > включить "sys admin".

Ответ 20

Я только что перезапустил свой SQL Server (MSSQLSERVER), с помощью которого мой агент SQL Server (MSSQLSERVER) также был перезапущен. Теперь я могу получить доступ к экземпляру базы данных SQL SERVER 2008 R2 через SSMS с моим логином.