我正在开发一个 VS Lightswitch 应用程序(C# 桌面客户端、SQL Server 数据库)。我现在的问题是:
在应用程序数据库中,我有一个角色,执行此客户端的 Windows 用户是该角色的成员。但是该用户在 Intrinsic DB(位于同一 sql server 上)中需要哪些权限。如果他是 db_owner 那里当然可以正常工作,但这不是解决方案吗?他必须是一个特殊角色的成员吗?
任何帮助表示赞赏 - 谢谢!
我正在开发一个 VS Lightswitch 应用程序(C# 桌面客户端、SQL Server 数据库)。我现在的问题是:
在应用程序数据库中,我有一个角色,执行此客户端的 Windows 用户是该角色的成员。但是该用户在 Intrinsic DB(位于同一 sql server 上)中需要哪些权限。如果他是 db_owner 那里当然可以正常工作,但这不是解决方案吗?他必须是一个特殊角色的成员吗?
任何帮助表示赞赏 - 谢谢!
找到解决方案!如果您发布您的解决方案,您将在 Publish-Folder 中找到 2 个 SQL 文件(用于使用 SQLCMD 执行!)
其中 CreateUser.sql 是将用户添加到内部数据库的模板:
:setvar DatabaseName ""
:setvar DatabaseUserName ""
GO
USE [$(DatabaseName)]
DECLARE @usercount int
SELECT @usercount=COUNT(name) FROM sys.database_principals WHERE name = '$(DatabaseUserName)'
IF @usercount = 0
CREATE USER $(DatabaseUserName) FOR LOGIN $(DatabaseUserName)
GO
EXEC sp_addrolemember N'db_datareader', N'$(DatabaseUserName)'
EXEC sp_addrolemember N'db_datawriter', N'$(DatabaseUserName)'
EXEC sp_addrolemember N'aspnet_Membership_FullAccess', N'$(DatabaseUserName)'
EXEC sp_addrolemember N'aspnet_Roles_FullAccess', N'$(DatabaseUserName)'
EXEC sp_addrolemember N'aspnet_Profile_FullAccess', N'$(DatabaseUserName)'
GO
只需设置 DatabaseName 和 DatabaseUserName 的值并执行 - 工作正常。