我有一个使用 SQL 2014 和 Windows Server 2012 R2 的始终可用组设置。组中有 3 个节点。SQL 服务在每个节点上作为托管服务帐户运行(每个服务器 1 个 MSA)。
我正在尝试在每个节点上创建一个链接服务器以指向当前的活动节点。因此,假设这三个服务器称为 Server1、Server2 和 Server3,而 AlwaysOn 可用性组称为 SQLAAG_PROD。我想创建到 SQLAAG_PROD 的链接服务器。
我能够为每个单独的节点创建一个链接服务器(例如 Server1 与 server2 和 Server3 的链接),并且使用安全选项可以正常工作Be made using the login's current security context。
但是,当我尝试为组侦听器创建链接服务器时,我得到了 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON
如果我将安全模式更改为对当前活动服务器使用 SA 密码,则一切正常,但出于明显的安全原因,这不是可接受的解决方案。
我已经阅读了很多关于需要设置 SPN 并允许帐户进行委派的内容。我Trust this computer for delegation to any service (Kerberos only)在 Active Directory 中打开了 SQLAAG_PROD 对象,但仍然有同样的问题。
有没有人以前见过这个,和/或是否有关于如何设置的指南?
===更新===
不确定它是否有帮助,但是当我跑步时
select auth_scheme from sys.dm_exec_connections where session_id=@@SPID
Run Code Online (Sandbox Code Playgroud)
当直接连接到节点时,我得到 …
authentication sql-server linked-server availability-groups sql-server-2014
我们有两台 SQL 2014 服务器,我在其中一台上创建了一个链接服务器到另一台上。作为我尝试运行的任务的一部分,我需要将 SQL 用户 ID 转换为本地和链接服务器上的用户名。
在本地服务器上,我可以调用
SELECT SUSER_NAME(1)
Run Code Online (Sandbox Code Playgroud)
这将返回字符串 sa
是否有一种简单的方法可以SUSER_NAME在链接服务器上运行该函数以从那里获取值?
我认为我发现的另一种选择是加入sys.server_principals并从那里拉出名称,但SUSER_NAME似乎是一种更清洁的方法。
我们的数据库中有许多表,其中一个标识列作为主键和聚集索引。多年来,记录已从这些表中添加和删除,当然现在主键列中存在空白。
由于这些“缺失”身份,这些表上的聚集索引的性能是否有任何影响?
根据我的理解,只要刷新索引 b 树,就不应该有任何问题,但是我找不到任何具体的内容来确认这一点。
谢谢
我不确定我是否在谷歌上搜索错误的东西,但我找不到答案。我们正在运行 SQL 2014。SQL Server 和 SQL 代理进程都在域托管服务帐户下运行。
安装 SQL 时NT SERVICE\MSSQLSERVER,NT SERVICE\SQLSERVERAGENT、NT SERVICE\SQLWriter、NT SERVICE\Winmgmt都设置为SysAdmins.
如果我以域用户身份运行 SQL 和 SQL 代理,我是否还需要这些 NT 服务帐户,和/或它们是否需要成为 SysAdmin?