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

Sql server SQL为PC上的所有用户分配读/写权限,sql-server,Sql Server,我正在一台PC上安装SQL数据库和我们的应用程序。在Vista下,这需要由管理员帐户安装,但这意味着常规用户帐户可以运行我们的程序,但无法访问它所需的数据库 我需要的是一种简单的方法,允许PC上的所有NT登录都可以访问数据库 我想我已经解决了这个问题:在SSMS中,我可以手动将db_datareader/writer角色分配给内置\用户,而且它工作得非常好 但是,如果我的安装程序以编程方式执行以下操作,则无法正常工作: USE [OurDatabase] GO EXEC sp_addroleme

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

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

我想我已经解决了这个问题:在SSMS中,我可以手动将db_datareader/writer角色分配给内置\用户,而且它工作得非常好

但是,如果我的安装程序以编程方式执行以下操作,则无法正常工作:

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做了一些稍微不同的事情


有人能建议一种以编程方式工作的方法吗?

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

在我们的数据库中,哪个用户映射到登录?您是否看到SSMS方法与编程方法的区别?当组登录工作时,映射到组登录的用户的默认模式是什么?

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

我在尝试做什么的时候,多次打开和关闭权限,在随后的尝试中,用户已经存在,因此SSMS不必理会CREATE命令。因此,当我最终弄明白我需要做什么时,我得到了一个不完整的(满足我需要的)脚本

这并不明显,因为在用户属性中看不到该命令的效果;它们出现在SSMS服务器安全\登录部分的用户映射中


多亏了Aaron(提到登录让我查看了Security\logins页面,我发现了其中映射的差异)

这正是我想要避免的。该应用程序以非提升用户的身份运行,我不希望每次用户希望运行该程序时,管理员都必须到机器上键入密码!如果我在SSMS中这样做,并要求它从“新用户”对话框中编写更改脚本,它会在我的问题中生成SQL脚本——因此我看不出我在编程中所做的有什么不同。在所有情况下,默认模式都显示为空(且不可编辑)。我在SSMS中看到的唯一区别是,通过编程添加的用户拥有一个新的“BUILTIN\Users”模式,它刚刚神奇地出现了-因此我唯一的提示是,也许我需要找到一种方法,使其使用更好的默认模式?有关解决方案的完整解释,请参阅我的答案。但接受了亚伦的建议,因为它为我指明了解决方案。