Доступ запрещен при подключении базы данных

Вы должны использовать:

a = (short)(a + b);

Что касается разницы между поведением назначения и присваивания, я полагаю, что это имеет какое-то отношение к этому (из msdn)

x+=y
is equivalent to
x = x + y
except that x is only evaluated once. The meaning of the + operator is
dependent on the types of x and y (addition for numeric operands, 
concatenation for string operands, and so forth).

Однако, это немного расплывчато, поэтому mabye, кто-то с более глубоким пониманием, может комментировать.

139
задан Rob 3 February 2012 в 15:03
поделиться

5 ответов

Спасибо за все комментарии. Некоторые из вас помогли мне найти ответ. Вот что я обнаружил:

Это была проблема разрешения NTFS, а не проблема SQL. Кроме того, это похоже на ошибку (и это повторяемо).

Проблема: учетная запись, которую я использовал, имела полный контроль разрешений NTFS для файлов mdf и ldf. Однако у него были эти разрешения через членство в группе (разрешения были у группы локальных администраторов, а моя учетная запись является членом локальных администраторов). (Я проверил разрешения)

Если я попытаюсь выполнить присоединение, подключиться к SQL Server от имени меня (где я нахожусь в группе администраторов), это не сработает с проблемой NTFS.

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

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

Таким образом, похоже, что ошибка возникает из-за того, что некоторый код (либо в SQL Server, либо в Management Studio) проверяет разрешения, которые имеет учетная запись пользователя, но не доходит до проверки разрешений группы, которые пользователь аккаунт наследуется.

Для меня это звучит странно, но я могу воспроизводить это снова и снова, поэтому я пришел к выводу, что это ответ.

Обновление: Я сообщил об этом как об ошибке: https://connect.microsoft.com/SQLServer/feedback/details/539703/access-denied-attaching-a-database-when-permissions- are-inherited

101
ответ дан 23 November 2019 в 23:02
поделиться

Когда вы входите в систему как sa (или любая учетная запись Sql Server), вы работаете как учетная запись службы SQL Server, когда вы входите в систему как вы, у вас есть разрешения вашей учетной записи. По какой-то причине у вас нет соответствующего доступа к файлам, но есть учетная запись службы.

9
ответ дан 23 November 2019 в 23:02
поделиться

Это похоже на разрешения NTFS. Обычно это означает, что ваша учетная запись службы SQL Server имеет доступ к файлу только для чтения (обратите внимание, что SQL Server использует одну и ту же учетную запись службы для доступа к файлам базы данных независимо от того, как вы вошли в систему). Вы уверены, что не изменили разрешения папки между входом в систему под своим именем и входом под именем sa? Если вы отсоедините папку и попробуете снова, сохранится ли та же проблема?

.
1
ответ дан 23 November 2019 в 23:02
поделиться

Пользователь sa использует учетные записи NTFS SQLServerMSSQLUser $ <имя_компьютера> $ <имя_экземпляра> и SQLServerSQLAgentUser $ <имя_компьютера> $ <имя_экземпляра> файлы. Вы можете попробовать добавить разрешения для одного или обоих этих пользователей.

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

4
ответ дан 23 November 2019 в 23:02
поделиться

Я читал эту страницу , и там есть интересное предложение:

Внимание: будьте очень избирательны при добавлении пользователей в эти роли. Например, sysadmin сопоставляется с dbo в каждой базе данных и является эквивалентом входа в систему с использованием учетной записи sa.

Конечно, у них также есть следующее:

Разрешения, которые предоставляются пользователям и ролям и зависят от базы данных. Все разрешения являются совокупными, за исключением ОТКАЗ. Отказ в разрешении на уровне пользователя или на уровне роли отменяет такое же разрешение , предоставленное через членство в другой роли , за исключением {{1} }} фиксированная роль сервера sysadmin.(Системный администратор сохраняет все разрешения, даже если роль, членом которой он является, имеет разрешение ОТКАЗАТЬ.)

Итак, если вы являетесь администратором домена и в Группа «sysadmin» SQL, мир должен быть вашим рачком.

Конечно, согласно Microsoft, вам следует быстро взглянуть на эти две страницы:
Ссылка на предварительные требования к базе данных

Ссылка на установку баз данных

Вы непослушны и пытаетесь прикрепить их вручную :) Если серьезно, есть ли у вас все предпосылки для базы данных AdventureWorks2008?
Я подозреваю, что это всего лишь еще один странный случай Microsoft, но я могу ошибаться.

1
ответ дан 23 November 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: