Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 基于令牌的服务器访问验证失败,出现基础结构错误_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 基于令牌的服务器访问验证失败,出现基础结构错误

Sql server 基于令牌的服务器访问验证失败,出现基础结构错误,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我希望在以下问题上得到帮助: 我在SQL 2008 server中创建了一个本地组,并添加了两个Windows用户帐户“DOMAIN\UserName”,然后将本地组添加到数据库中并授予只读访问权限 用户试图使用MS Access和ODBC连接链接表,并出现以下错误。 用户不是系统管理员 日期2010年6月30日下午1:01:54 SQL Server日志(当前-2010年6月30日下午1:10:00) 源登录 消息 用户“域\用户名”登录失败。原因:基于令牌的服务器访问验证失败,出现基础结构错

我希望在以下问题上得到帮助:

我在SQL 2008 server中创建了一个本地组,并添加了两个Windows用户帐户“DOMAIN\UserName”,然后将本地组添加到数据库中并授予只读访问权限

用户试图使用MS Access和ODBC连接链接表,并出现以下错误。 用户不是系统管理员

日期2010年6月30日下午1:01:54 SQL Server日志(当前-2010年6月30日下午1:10:00) 源登录 消息 用户“域\用户名”登录失败。原因:基于令牌的服务器访问验证失败,出现基础结构错误。检查以前的错误。[客户:999.99.9.99]   日期2010年6月30日下午1:01:54 SQL Server日志(当前-2010年7月1日上午8:12:00)

源登录

信息 错误:18456,严重性:14,状态:11

数据库服务器: windows Server 2008 R2企业版 系统类型:64位操作系统
SQL Server 2008

这听起来像是广告服务器的Kerberos/windows身份验证问题。我会和你的广告管理员联系,看看他们是否能帮你解决这个问题。

谢谢你的回复

我找到了问题的原因。我只是想让日志中的MS错误信息更加清晰。有日志访问问题的远程用户也是被拒绝访问我们数据库的组的一部分。我完全忽略了这个配置。然后我创建了一个不同的组,并授予该用户访问权限。我还明确授予了访问权限,在这两种情况下,用户都被拒绝访问。一旦我删除了拒绝访问的组,一切都很好


p、 reinoso

您用于连接SQL server的服务帐户可能缺少SPN。例如,如果您试图使用帐户svcacct1从websrv1连接到sqlsrv1,您可以(使用域管理员帐户)添加SPN,以确保AD允许使用该帐户从该计算机进行身份验证

setspn -A MSSQLSvc/websrv1.domain.local:1433 svcacct1

现在,当您尝试使用WebServ1中的SVCACT1连接到sqlsrv1(以使用MS SQL进行身份验证)时,凭据应通过并允许在服务器上进行身份验证,而不会产生此错误。

我的问题与Pedro的(p.reinoso)有点不同。 在我的设置中,设置了一个Windows域组来管理DBA管理员对SQL Server的访问。有个人是MyDomain\SQL\u管理组的成员,但他们在其中一台服务器上的个人SQL登录已被禁用。
当我们删除SQL登录时,个人能够基于组凭据进行连接。

我遇到了这个问题,这是因为用户是父域的一部分,而我只给了一个组他们是访问的一部分(例如,parent\someGroup)。因此,事实证明,该组是一个“域本地”组,而不是一个全局/通用组。子域中的My DB无法读取父域中域本地组的令牌。

我遇到了相同的问题:

基于用户令牌的服务器访问验证登录失败,出现基础结构错误


我只是忘了给那个用户读/写数据库的权限。我们在服务器上为每个网站创建一个用户,权限较低的用户需要对web文件的读取权限、自己的应用程序池以及对Sql server中特定数据库的读/写访问权限。我忘记了最后一步,在日志中得到了这条模糊的信息。添加这些权限可以解决此问题。

当您使用旧服务器名称重命名新构建的服务器时,以下类型的帐户/s yourdomaniname\ServerName$会出现此错误,即服务器升级。 要解决此问题,您需要在所有映射数据库中删除用户,删除登录名,创建登录名,最后再次授予数据库权限

第一步。脚本输出创建登录(您必须使用脚本,因为此类用户不可搜索)

第二步。记下用户有权访问的数据库和授予的权限,然后从每个数据库中删除用户

USE MyDatabase;
IF EXISTS (SELECT * FROM sys.DATABASE_principals WHERE name = N'YourDomaninName\ServerName$')
DROP USER [YourDomaninName\ServerName$];
第三步。从服务器上删除登录名

USE [Master];
IF EXISTS (SELECT * FROM sys.server_principals WHERE name = N'YourDomaninName\ServerName$') 
DROP LOGIN [YourDomaninName\ServerName$]
第四步。使用前面创建的脚本创建登录

CREATE LOGIN [YourDomaninName\ServerName$] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english];

第五步。从步骤2所做的笔记向每个数据库授予权限。这一步可以通过SSMS手动完成。

我有一个类似的问题,我的答案为我解决了,但是,我看到您已经解决了您的问题。
CREATE LOGIN [YourDomaninName\ServerName$] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english];