Разрешения SQL Server 2008 R2 Express - невозможно создать базу данных или изменить пользователей

Недавно только что обновили до SQL Server 2008 R2 Express. Когда я пытаюсь создать базу данных после входа в систему с использованием аутентификации Windows с моим идентификатором roger.moore, я получаю эту ошибку:

Возникла исключительная ситуация при выполнении оператора или пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
В базе данных 'master' отказано в разрешении CREATE DATABASE. RESTORE HEADERONLY прерывается ненормально Ошибка 262

Если я пытаюсь добавить роль sysadmin в roger.moore, я получаю следующую ошибку:

Не удалось добавить участника для ServerRole 'sysadmin'. (Microsoft.SqlServer.Smo)
Возникла исключительная ситуация при выполнении оператора или пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
У пользователя нет прав на выполнение этого действия Ошибка 15247

Если я попытаюсь добавить эту роль для моего пользователя с помощью T-SQL, используя эту команду,

EXEC sp_addsrvrolemember 'ziffenergy\roger.moore', 'sysadmin';
GO

Вот ошибка, которую я получаю:

Сообщение 15247, уровень 16, состояние 1, процедура sp_addsrvrolemember, строка 29
Пользователь не имеет разрешения на выполнение этого действия.

У кого-нибудь есть предложения? Кажется, я ничего не могу сделать с базой данных на локальной машине. Обратите внимание, что я являюсь администратором на рабочей станции Windows 7, которую я использую, и если я попытаюсь создать или изменить базы данных и / или пользователей на нашем сетевом сервере баз данных IT Test с помощью SQL Server Management Studio, я могу сделать это без проблем.

6 ответов

Решение

Вы можете быть администратором на рабочей станции, но это ничего не значит для SQL Server. Ваш логин должен быть участником роли sysadmin для выполнения указанных действий. По умолчанию группа локальных администраторов больше не добавляется в роль sysadmin в SQL 2008 R2. Вам нужно будет войти в систему с чем-то другим (например, sa), чтобы предоставить себе разрешения.

Опаздываю на вечеринку, но я нашел это фантастическое пошаговое руководство по получению контроля над вашим экземпляром SQLExpress, если у вас нет пароля sa. Я использовал этот процесс, чтобы не только сбросить пароль sa, но также добавил свою учетную запись домена ко всем доступным ролям сервера. Теперь я могу создавать базы данных, изменять логины, выполнять массовые операции, выполнять резервное копирование / восстановление и т. Д., Используя мой обычный вход в систему.

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

Изменить: я скопировал шаги ниже - слава оригинальному автору по ссылке выше.

  1. Войдите на компьютер как администратор (или любой пользователь с правами администратора)
  2. Откройте "Диспетчер конфигурации SQL Server"
  3. Нажмите "Службы SQL Server" на левой панели.
  4. Остановите экземпляр "SQL Server" и "Агент SQL Server" на правой панели, если он работает
  5. Запустите SQL Express в однопользовательском режиме, щелкнув правой кнопкой мыши экземпляр "SQL Server" -> Свойства (в правой панели диспетчера конфигурации SQL Server).
  6. Нажмите вкладку "Дополнительно" и найдите "Параметры запуска". Измените "Параметры запуска", чтобы новое значение было -m; (без примера<>): из: -dc:\Program Files\Microsoft SQL.............(до конца строки) в: -m;-dc:\Program Files\Microsoft SQL.............(до конца строки)
  7. Запустите SQL Server
  8. Откройте MS SQL Server Management Studio и войдите на сервер SQL с "Аутентификацией Windows" в качестве режима аутентификации. Поскольку у нас SQL Server работает в однопользовательском режиме, и вы вошли в систему на компьютере с правами администратора, у вас будет доступ "sysadmin" к базе данных.
  9. Разверните узел "Безопасность" в MS SQL Server Management Studio на левой панели.
  10. Разверните узел "Логины"
  11. Дважды щелкните логин 'sa'
  12. Измените пароль, введя сложный пароль, если установлен флажок "Принудить политику паролей", в противном случае просто введите любой пароль.
  13. Убедитесь, что учетная запись "sa" "включена", нажав "Статус" на левой панели. Установите флажок "Вход" в "Включен"
  14. Нажмите "ОК"
  15. Вернувшись в главное окно MS SQL Server Management Studio, проверьте, используется ли проверка подлинности SQL Server, щелкнув правой кнопкой мыши самый верхний узел на левой панели (обычно ".\SQLEXPRESS (SQL Server)") и выбрав свойства.
  16. Нажмите "Безопасность" на левой панели и убедитесь, что "Режим проверки подлинности SQL Server и Windows" выбран в разделе "Проверка подлинности сервера"
  17. Нажмите "ОК"
  18. Отключиться от MS SQL Server Management Studio
  19. Снова откройте "Sql Server Configuration Manager" и остановите экземпляр SQL Server.
  20. Щелкните правой кнопкой мыши экземпляр SQL Server и перейдите на вкладку "Дополнительно". Снова найдите "Параметры запуска" и удалите "-m;" что вы добавили ранее.
  21. Нажмите "ОК" и снова запустите экземпляр SQL Server.
  22. Теперь вы сможете войти в систему как "sa", используя новый пароль, который вы установили в шаге 12.

В SSMS 2012 вам придется использовать:

Чтобы включить однопользовательский режим, в свойствах экземпляра SQL НЕ переходите к тегу "Advance", тег "Параметры запуска" уже существует.

  1. Добавить "-m;" в параметры;
  2. Перезапустите службу и войдите в этот экземпляр SQL с помощью проверки подлинности Windows;
  3. Остальные шаги такие же, как указано выше. Измените разрешение учетной записи пользователя Windows в безопасности или сбросьте пароль учетной записи SA.
  4. Наконец, удалите параметр "-m" из "параметров запуска";

Я следовал за шагами в ответе killthrush, и, к моему удивлению, это не сработало. Входя в систему как sa, я мог видеть своего пользователя домена Windows и сделал его системным администратором, но когда я попытался войти в систему с аутентификацией Windows, я не мог видеть свой логин под логинами, не мог создавать базы данных и т. Д. Затем это поразило меня. Этот логин, вероятно, был связан с другой учетной записью домена с тем же именем (с каким-то внутренним / скрытым идентификатором, который был неправильным). Я покинул эту организацию некоторое время назад, а потом вернулся через несколько месяцев. Вместо повторной активации моей старой учетной записи (которую они могли удалить) они создали новую учетную запись с тем же доменом \ именем пользователя и новым внутренним идентификатором. Используя sa, я удалил свой старый логин, заново добавил его с тем же именем и добавил sysadmin. Я снова вошел с Windows Auth, и все выглядит так, как должно. Теперь я могу видеть свои логины (и другие) и могу делать все, что мне нужно, в качестве системного администратора, используя мой аутентификационный логин Windows.

У меня была такая же проблема, пока я не нашел это . Я открываю новый запрос и запускаю следующее

      RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

затем щелкните правой кнопкой мышиDatabases->Restore Database-> выбратьDevice-> нажмите...->ADDваш набор данных -> НажмитеOk

У меня есть 2 учетных записи на моем компьютере с Windows, и у меня возникла проблема с одним из них. Я не хотел использовать sa аккаунт, я хотел использовать Windows логин. Для меня не сразу было очевидно, что мне нужно просто войти в другую учетную запись, которую я использовал для установки SQL Server, и оттуда добавить разрешения для новой учетной записи.

(SSMS > Security > Logins > Add a login there)

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

echo %userdomain%\%username%

Добавьте логин для этого пользователя и дайте ему все разрешения для master db и других баз данных, которые вы хотите. Когда я говорю "все разрешения", убедитесь, что НЕ проверили ни одно из "запрещенных" разрешений, так как это сделает обратное.

Другие вопросы по тегам