【问题标题】:Does Integrated Security=SSPI require a Windows user in the Administrators group?Integrated Security=SSPI 是否需要管理员组中的 Windows 用户?
【发布时间】:2013-03-03 14:24:02
【问题描述】:

我在使用普通用户和 sql express 数据库测试我的 c# WinForms 应用程序时遇到问题。我认为连接字符串中的 SSPI 是问题所在。

编辑:问题是连接不会打开。这是我以普通用户身份登录时遇到的异常(我没有以管理员身份正确打开它)。

用户“AsusWin7-64\SomeUser”登录失败。 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔 breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(布尔 enlistOK) 在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,字符串 newPassword,布尔型 ignoreSniOpenTimeout,TimeoutTimer 超时,SqlConnection owningObject) 在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,字符串 newPassword,布尔重定向用户实例,SqlConnection owningObject,SqlConnectionString connectionOptions,TimeoutTimer 超时) 在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject,TimeoutTimer 超时,SqlConnectionString connectionOptions,字符串 newPassword,布尔重定向用户实例) 在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识,SqlConnectionString 连接选项,对象 providerInfo,字符串 newPassword,SqlConnection owningObject,布尔重定向用户实例) 在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,对象 poolGroupProviderInfo,DbConnectionPool 池,DbConnection owningConnection) 在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection,DbConnectionPool 池,DbConnectionOptions 选项) 在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) 在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) 在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory) 在 System.Data.SqlClient.SqlConnection.Open()

【问题讨论】:

  • 您的问题的答案是“否”。但是,不可能就问题可能是什么提供任何建议,因为您没有告诉我们问题是什么——“我正在测试问题”而不告诉我们问题是什么是没有意义的。请edit您的问题提供更多信息。就目前而言,这不是一个真正的问题。
  • @Ken -- 添加了其他信息。

标签: c# sql-server-2008


【解决方案1】:

标题中提出的问题的答案是否定的,SSPI 不需要管理员组中的 Windows 用户。您遇到的故障/错误的确切性质是什么?

*编辑:* 您需要确保您的 SQL Express 数据库配置为接受 Windows 集成身份验证,然后将该本地计算机用户定义到具有相应数据库权限的数据库中(s)、表和程序。

【讨论】:

  • +1。它只需要在 SQL 中配置用户才能访问,管理员可以访问,因为通常添加本地管理员组以对给定服务器上的每个 SQL 数据库具有完全访问权限。
  • 我的应用是针对非技术用户的收缩包装,我永远不会提前知道任何普通用户,也永远不会有 DBA 来设置权限。我的安装将无法设置用户。对普通用户的任何建议表示赞赏。有没有办法为任何用户设置 sql express 安全性?
  • 呃,不幸的是,如果您没有管理或配置工具,则没有太多选择。您可能希望(必须)考虑创建单个 SQL Server 用户并将该身份用于应用程序的数据访问,然后可以将其编码到应用程序中。无论如何都不理想,但考虑到您的限制,它可能是您唯一的选择。
  • 几个小时后想通了。我采用了将“BUILTIN/Users”登录添加到我的数据库的方法,具有读/写权限。现在 Integrated Security=SSPI 对普通用户有效。
猜你喜欢
  • 2019-02-23
  • 2010-11-16
  • 2010-12-23
  • 1970-01-01
  • 2016-02-24
  • 2011-01-27
  • 1970-01-01
  • 2012-09-13
  • 2015-06-20
相关资源
最近更新 更多