Я устанавливаю SQL Server 2008 Express вместе со своим приложением через загрузчик.
Мне нужно предоставить пользователям права администратора для SQL Server, чтобы обычный пользователь мог создавать и управлять БД.
Я делал это через загрузчик с этим:
<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">
Но мне нужно сделать это сейчас, в зависимости от региональных настроек, так как это не будет работать для голландской системы, например, какони не используют BUILTIN\Users
, но INGEBOUWD\Gebruikers
.
Я решил сделать это там, где создается моя БД, используя:
SecurityIdentifier sidservice = new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null);
NTAccount acct = (NTAccount)sidservice.Translate(typeof(NTAccount));
string sqlsvcaccount = acct.Value.ToString();
SecurityIdentifier sidadmin = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
NTAccount adminacct = (NTAccount)sidadmin.Translate(typeof(NTAccount));
string SQLSYSADMINACCOUNTS = acct.Value.ToString();
string cmdStr = "EXEC sp_grantdbaccess '" + SQLSYSADMINACCOUNTS + "' " +
"EXEC sp_addrolemember 'db_owner', '" + SQLSYSADMINACCOUNTS + "'" +
"EXEC sp_addsrvrolemember " + SQLSYSADMINACCOUNTS + "', 'dbcreator' ";
command = new OleDbCommand(cmdStr, conn);
command.ExecuteNonQuery();
Но теперь мне нужно это проверить, номоя система на английском языке, и у меня нет доступа к голландской или любой другой языковой ОС: -)
Есть ли другой способ проверить это?
Заранее большое спасибо!