Создание схемы БД .sql при установке приложения и работе от имени обычного пользователя

У меня есть приложение, которое выполняет файл .sql с командами для создания и настройки БД в SQL Express 2008. Оно устанавливает и выполняет его с правами администратора, но я также хотел бы, чтобы обычные пользователи выполняли приложение и имели доступ к ДБ. Я использую обычные проекты установки с Visual Studio 2008, а НЕ ClickOnce.

Как я мог это сделать?

EDITED: я столкнулся с http://archive.msdn.microsoft.com/addselftosqlsysadmin/, который частично решает проблему, но все же администратору необходимо выполнить этот скрипт с правами администратора, чтобы обычный пользователь мог быть добавлен в SQL Express. Можно ли сделать что-то подобное без использования администратора?


person noloman    schedule 12.01.2012    source источник
comment
Если ваш «обычный» пользователь не имеет привилегии создания базы данных, вы набиты.   -  person Tony Hopkinson    schedule 12.01.2012
comment
@TonyHopkinson, как я могу это сделать? Может это решит проблему   -  person noloman    schedule 13.01.2012
comment
(GRIN) Ну, вам нужно войти в систему как администратор и дать им это....   -  person Tony Hopkinson    schedule 13.01.2012


Ответы (1)


Вы должны запускать скрипты для создания и настройки БД только один раз, когда приложение установлено. Установщики должны запускаться только администраторами. Для этого есть причина... «Обычный пользователь» должен иметь возможность только запускать приложение и получать доступ к БД.

person Catalin Serafimescu    schedule 12.01.2012
comment
да, в том-то и дело: я нашел эту ссылку blogs.msdn.com/b/sqlexpress/archive/2010/02/23/…, и этот скрипт делает именно то, что я хочу. Проблема в том, что администратору нужно запустить скрипт, чтобы можно было добавить обычного пользователя. Можно ли сделать обходной путь, чтобы этот скрипт выполнялся всякий раз, когда обычный пользователь запускает приложение в первый раз? или, по крайней мере, сделать какое-то действие, которое позволит обычному пользователю иметь доступ к этой БД - person noloman; 13.01.2012
comment
Я не уверен, что точно понимаю шаги. Предполагая, что вы уже создали БД, вы также можете создать пользователя и предоставить разрешения. Или вы можете использовать SSPI (как рекомендует MS), и обычный пользователь должен иметь к нему доступ. С точки зрения безопасности очень важно контролировать, кто и как может получить доступ к вашему ресурсу. Вы должны стремиться контролировать доступ, не позволять никому получать доступ по своей воле. - person Catalin Serafimescu; 14.01.2012
comment
Что я наконец сделал, так это использовал /SQLSYSADMINACCOUNTS=Builtin\Users в package.xml, поэтому мы добавили пользователей в учетные записи Sysadmin в SQL Express 2008. - person noloman; 16.01.2012
comment
Вы предоставили роль SYSADMIN всем обычным пользователям! Это не очень хорошая идея! Если вы запускаете установку от имени администратора, у вас должны быть все привилегии, необходимые для предоставления пользователю разрешения на доступ к вашей базе данных. Если вы не работаете от имени администратора, я не думаю, что у вас будет какое-либо разрешение, необходимое для создания БД. - person Catalin Serafimescu; 17.01.2012
comment
тогда какое может быть решение? Я понял, что в XP это недопустимо, так как файлы .mdf будут находиться в папке ProgramsFiles в папке администратора, к которой у обычных пользователей не будет доступа. - person noloman; 31.01.2012
comment
Как я уже сказал, обычный путь — установить приложение от имени администратора (есть инструменты для автоматического развертывания программного обеспечения) и, как часть установки, предоставить права пользователя. Но было бы лучше, если бы вы использовали центральный сервер для всех клиентов и имели разрешения администратора базы данных для каждого пользователя — вы могли бы использовать встроенную безопасность. - person Catalin Serafimescu; 31.01.2012