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

Резервные разрешения

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

Но когда я иду на резервное копирование или восстановление базы данных, я получаю ошибку:

C:\Program Files\Microsoft SQL Сервер\MSSQL10.MSSQLSERVER\MSSQL\Резервное копирование
Не удается получить доступ к указанному пути или файла на сервере. Убедитесь, что у вас есть необходимые права безопасности и что путь или файл существует.....................

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

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

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

PS: уже добавлен пользователь в роль db_backoperator.

Какие разрешения необходимы?

4b9b3361

Ответ 1

Вы подключаетесь с использованием логина авторизации SQL или входа в Windows? Если SQL auth login, как вы даете этим "входам" права доступа для Windows в папку в Windows? Windows не знает о каких-либо входах для проверки подлинности SQL, которые вы создали в SQL Server. Пожалуйста, покажите нам, что вы подразумеваете под "Я создал пользователя на сервере" - какой пользователь? какой сервер? SQL Server или Windows?

В качестве обходного пути вы также можете создать хранимую процедуру, которая выполняется как sa или вход в Windows, входящий в группу sysadmin, и предоставить этому пользователю с меньшим привилегией возможность выполнить. Однако мне удалось создать резервную копию базы данных, добавив пользователя peon без каких-либо других прав и просто добавив их в роль db_backupoperator:

CREATE LOGIN peon WITH PASSWORD = 'foo', CHECK_POLICY = OFF;
GO
CREATE DATABASE splunge;
GO
USE splunge;
GO
CREATE USER peon FROM LOGIN peon;
GO
EXEC sp_addrolemember 'db_backupoperator', 'peon';
GO
EXECUTE AS USER = 'peon';
GO
BACKUP DATABASE splunge
  TO DISK = 'C:\tmp\splung.bak' -- change this path obviously
  WITH INIT, COMPRESSION;
GO
REVERT;
GO

Итак, я бы подтвердил, что учетная запись службы SQL Server имеет достаточные привилегии для записи на указанный путь. Я знаю, что вы сказали, что это так, но, как я показал, это не проблема с пользователем peon, а скорее способность ядра писать в файловую систему. Если вы попробуете вышеупомянутую команду резервного копирования, не добавляя peon в роль db_backupoperator, вы получите эту ошибку (она не позволяет вам приблизиться к фактической команде резервного копирования или проверить любые разрешения на диске):

Msg 262, Level 14, State 1, Line 1
BACKUP DATABASE permission denied in database 'splunge'.
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.

Если это вход в Windows, пожалуйста, подтвердите, что у пользователя есть права на запись в соответствующую папку. Попробуйте использовать другую папку, отличную от иерархии под C:\Program Files\..., и не пытайтесь писать напрямую в корневой каталог (например, C:\file.bak).

Ответ 2

db_backupoperator - это роль базы данных, а не роль сервера или разрешение Windows. Он только предоставляет пользователю необходимый доступ к базе данных для создания резервной копии. Он не предоставляет никаких прав файловой структуре сервера, которые необходимы для создания файла резервной копии.

IIRC, чтобы получить доступ к файловой структуре для создания резервной копии, пользователь должен либо иметь права доступа к окнам/доменам для доступа к ней, либо иметь роль сервера sysadmin для получения собственного SQL Server Права доступа к Windows.

Кроме того, для фактического восстановления базы данных пользователю потребуется роль сервера dbcreator.

Ответ 3

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

Ответ 4

Я запускаю Windows 10 (x64), SQL Server Express 2014, пытаясь восстановить резервную копию базы данных x86 SQL Server 2005, поэтому я могу использовать данные и помочь решить проблему в нашем приложении. Я столкнулся с тем же сценарием с разрешениями при резервном копировании и восстановлении файла .bak.

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

Итак, что я сделал, это войти в "Службы в Windows", найти SQL Server, щелкнуть правой кнопкой мыши по "Свойствам", остановить службу, затем перейти на вкладку "LogOn" и изменить "Войти в систему" ​​на "Локальная учетная запись системы" и проверить в поле "Разрешить службе взаимодействовать с рабочим столом". Начал службу, и я был в пути.

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