Preciso instalar uma instância do SQL Server Express (como administrador) que pode ser lida e modificada posteriormente por usuários comuns.
Eu encontro http://msdn.microsoft.com/en-us/library/ms254504.aspx e estou tentando fazer funcionar como diz lá, com esta string de conexão:
Provider=sqloledb;Data Source=.\\DUBOCALC;Integrated Security=true;User Instance=true;AttachDBFilename=|DataDirectory|\\" + HelperClasses.DuboCalcSettings.dbname + ".mdf;Initial Catalog=DUBOCALC;Trusted_Connection=yes;
O problema que tenho é que a instância é criada em C:\Program Files\Microsoft SQL Server\MSSQL10.INSTANCENAME
, mas tudo isso na pasta do administrador, então usuários comuns não podem ter acesso lá, onde .mdf
estão os arquivos.
No meu arquivo bootstrapper, tenho a seguinte linha para instalar o SQL Express:
<Command PackageFile="SQLEXPR32_x86_ENU.EXE"
Arguments='/q /hideconsole /action=Install /features=SQL /instancename=DUBOCALC /enableranu=1 /sqlsvcaccount="NT Authority\Network Service" /SQLSYSADMINACCOUNTS="Builtin\Users" /skiprules=RebootRequiredCheck'
EstimatedInstalledBytes="225000000"
EstimatedInstallSeconds="420">`
Como eu poderia fazer isso, por favor?
Acho que é um uso muito comum instalar uma instância do SQL Server Express como administrador e executá-la como usuário, mas não consigo encontrar nenhuma informação útil que me ajude a fazer isso funcionar.
desde já muito obrigado a todos, Manuel.
/SQLSYSADMINACCOUNTS adiciona usuários e grupos ao grupo de administração do sistema SQL Servers (todo poderoso). Esse grupo de administradores de sistema é um conceito de segurança no nível do servidor SQL.
O SQL Server e o SQL Server Express são executados como um serviço (e o que é executado não determina a segurança do usuário final). Portanto, as permissões no diretório de dados (e nos arquivos .mdf) não controlam como os usuários finais se conectam.
Sua string de conexão deve ser algo como:
Por padrão, o SQL Express é instalado em uma instância nomeada chamada "SQLExpress", portanto, a fonte de dados é o nome da máquina em que o serviço está sendo executado e \ nome da instância. A segurança integrada diz ao cliente para se conectar com suas credenciais atuais. Se esse usuário estiver no grupo que possui associação de função de administrador de sistema, ele será poderoso.
Aqui está um link com mais exemplos de strings de conexão:
http://www.connectionstrings.com/sql-server-2005
Você também pode usar contas SQL (não integradas) e incorporá-las na string de conexão: https://stackoverflow.com/questions/997169/c-sharp-2008-sql-server-express-connection-string
Você precisa editar o usuário sob o qual o serviço do SQL Server está sendo executado. Você pode fazer isso na guia services.msc