感谢您对以下问题的帮助:
我在SQL 2008服务器中创建了一个本地组,并添加了两个Windows用户帐户“DOMAIN \ UserName”然后我将本地组添加到数据库并授予了只读访问权限。
用户正在尝试使用MS Access和ODBC连接链接表并收到以下错误。 用户不是系统管理员。
日期6/30/2010 1:01:54 PM 记录SQL Server(当前 - 2010年6月30日下午1:10:00) 来源登录 信息 用户'DOMAIN \ UserName'登录失败。原因:基于令牌的服务器访问验证因基础结构错误而失败。检查以前的错误。 [客户:999.99.9.99] 日期6/30/2010 1:01:54 PM 记录SQL Server(当前 - 2010年7月1日上午8:12:00)
来源登录
信息 错误:18456,严重性:14,状态:11。
数据库服务器: Windows Server 2008 R2企业版 系统类型:64位操作系统 SQL Server 2008
答案 0 :(得分:1)
感谢您的回复。
我讲述了问题的原因。我只是在日志中发送MS错误消息可能会更清楚。具有日志记录访问问题的远程用户也是被拒绝访问我们的数据库的组的一部分。我完全忽略了这种配置。然后,我创建了一个不同的组并授予用户访问权限。我还明确授予访问权限,并且在两个实例中都拒绝用户访问。一旦我删除拒绝访问的组,它一切正常。
p.reinoso
答案 1 :(得分:1)
您用于连接SQL服务器的服务帐户可能缺少SPN。例如,如果您尝试使用帐户svcacct1从websrv1连接到sqlsrv1,则可以(使用域管理员帐户)添加SPN以确保AD允许使用该帐户从该计算机进行身份验证。
setspn -A MSSQLSvc/websrv1.domain.local:1433 svcacct1
现在,当您尝试使用websrv1中的svcacct1连接到sqlsrv1(以使用MS SQL进行身份验证)时,凭据应该通过并允许在服务器上进行身份验证,而不会生成此错误。
答案 2 :(得分:0)
这听起来像是AD服务器的Kerberos / Windows身份验证问题。我会咨询您的AD管理员,看看他们是否可以帮助您排除故障。
答案 3 :(得分:0)
我的问题与佩德罗(p.reinoso)有点不同。 在我的设置中,设置了一个Windows域组来管理DBA管理员对SQL服务器的访问。个人是MyDomain \ SQL_Admin组的成员,但其中一个服务器上的个人SQL登录已被禁用。 当我们删除SQL登录时,个人能够根据组凭据进行连接。
答案 4 :(得分:0)
我遇到了这个问题,这是因为用户是父域的一部分而且我只给了一个他们是访问权限的组(例如PARENT \ someGroup)。事实证明,该组是一个“域本地”组,而不是全局/通用组。我的子域中的数据库无法读取父域中域本地组的令牌。
答案 5 :(得分:0)
我有同样的问题:
用户基于令牌的服务器访问验证登录失败,导致基础结构错误
我只是忘了给Permissions读取/写入该用户的数据库。我们为服务器上的每个网站创建一个用户,并且较低权限的用户需要对Web文件,其自己的应用程序池以及对Sql Server中特定数据库的读取器/写入器的读访问权。我忘记了最后一步,并在日志中得到了这个模糊的消息。添加这些权限解决了它。
答案 6 :(得分:0)
当您使用旧服务器名称(即服务器升级)重命名新构建的服务器时,将出现以下类型的帐户YourDomaninName \ ServerName $的错误。 要解决此问题,您需要在所有映射数据库中删除用户,删除登录名,创建登录名,最后再次授予数据库权限。
步骤1.编写脚本创建登录(您必须使用脚本,因为此类用户无法搜索)
CREATE LOGIN [YourDomaninName\ServerName$] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english];
步骤2.记下用户有权访问的数据库和授予的权限,然后从每个数据库中删除用户。
USE MyDatabase;
IF EXISTS (SELECT * FROM sys.DATABASE_principals WHERE name = N'YourDomaninName\ServerName$')
DROP USER [YourDomaninName\ServerName$];
步骤3.从服务器上删除登录信息
USE [Master];
IF EXISTS (SELECT * FROM sys.server_principals WHERE name = N'YourDomaninName\ServerName$')
DROP LOGIN [YourDomaninName\ServerName$]
步骤4.使用先前创建的脚本创建登录
CREATE LOGIN [YourDomaninName\ServerName$] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english];
步骤5.从步骤2中的注释中为每个数据库授予权限。此步骤可以通过SSMS手动完成。