SQL为PC上的所有用户分配读/写访问权限

时间:2009-10-20 14:15:27

标签: sql-server

我正在一台PC上安装SQL数据库和我们的应用程序。在Vista下,这需要由管理员帐户安装,但这意味着常规用户帐户可以运行我们的程序,但它无法访问所需的数据库。

我需要的是一种允许PC上所有NT登录访问数据库的简单方法。

我以为我已经解决了这个问题:在SSMS中,我可以手动将db_datareader / writer角色分配给BUILTIN \ Users,它运行正常。

但是,如果我的安装程序以编程方式执行以下操作,则它不起作用:

USE [OurDatabase]
GO
EXEC sp_addrolemember N'db_datawriter', N'BUILTIN\Users'
GO
EXEC sp_addrolemember N'db_datareader', N'BUILTIN\Users'
GO

为用户分配角色,但他们仍然无法访问数据库。我在SSMSE中看到的唯一区别是,在后一种情况下,他们还获得了新的“BUILTIN \ Users”架构的所有权,我怀疑这可能会搞砸了。很明显,SSMS做的事情略有不同......

任何人都可以建议一种方法来以编程方式运行吗?

3 个答案:

答案 0 :(得分:2)

在OurDatabase中,用户是映射到登录的?您是否看到SSMS方法与程序化方法有所不同?当工作

时,映射到组登录的用户的默认架构是什么?

答案 1 :(得分:0)

如何将应用程序设置为仅在vista上以管理员身份运行?

答案 2 :(得分:0)

啊,似乎SSMS也做了     创建用户[BUILTIN \ Users]登录[BUILTIN \ Users] 如果用户不存在,则在数据库上。

我试图弄清楚要做什么,然后在用户已经存在的后续尝试中多次打开和关闭权限,因此SSMS没有使用CREATE命令。所以,当我终于弄清楚我需要做什么时,我得到的是一个不完整的(根据我的需要)脚本。

这并不明显,因为在用户属性中看不到此命令的效果;它们出现在SSMS的Server Security \ Logins部分的用户映射中。

感谢Aaron(提到登录让我看着Security \ Logins页面,我发现了那里映射的差异)