我有一个在 Windows XP(我知道)上运行 SQL Server 7(我知道)的盒子。
突然之间,我无法使用 Windows 身份验证从本地计算机连接到数据库。
我可以在本地计算机上使用 SQL 身份验证进行连接。
我可以使用另一台机器上的 SQL 和 Windows 身份验证进行连接。
这是我在使用查询分析器使用 Windows 身份验证连接到本地数据库时遇到的错误。
我试过使用机器名称 . 和本地主机。
有任何想法吗?
谢谢!
更新:添加了服务器协议的截图
我有一个在 Windows XP(我知道)上运行 SQL Server 7(我知道)的盒子。
突然之间,我无法使用 Windows 身份验证从本地计算机连接到数据库。
我可以在本地计算机上使用 SQL 身份验证进行连接。
我可以使用另一台机器上的 SQL 和 Windows 身份验证进行连接。
这是我在使用查询分析器使用 Windows 身份验证连接到本地数据库时遇到的错误。
我试过使用机器名称 . 和本地主机。
有任何想法吗?
谢谢!
更新:添加了服务器协议的截图
我已经在两台服务器 Server1 和 Server 2 上建立了一个镜像数据库。
在 Server3 上,我正在尝试设置一个链接服务器,无论哪个服务器具有活动数据库,该服务器都可以正常工作。
我正在使用它来设置链接服务器。
EXEC sp_addlinkedserver
@server = N'MyLinkedServer',
@srvproduct = N'',
@provider = N'SQLNCLI',
@provstr = N'Server=SERVER1;FailoverPartner=SERVER2;Network=dbmssocn',
@catalog = N'MyDatabase';
EXEC master.dbo.sp_serveroption
@server = N'MyLinkedServer',
@optname = N'data access',
@optvalue = N'true';
EXEC master.dbo.sp_serveroption
@server = N'MyLinkedServer',
@optname = N'rpc',
@optvalue = N'false';
EXEC master.dbo.sp_serveroption
@server = N'MyLinkedServer',
@optname = N'rpc out',
@optvalue = N'true';
EXEC master.dbo.sp_serveroption
@server = N'MyLinkedServer',
@optname = N'connect timeout',
@optvalue = N'60';
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'MyLinkedServer',
@locallogin = NULL,
@useself = N'False',
@rmtuser = N'sqluser',
@rmtpassword = N'sqlpassword';
只要 Server1 上的 MyDatabase 是主体,链接服务器就可以工作。当我手动故障转移到 Server2 时,链接服务器失败。
错误消息是:
Msg 11001, Level 16, State 1, Line 0
TCP Provider: No such host is known.
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'sqluser'.
Msg 4060, Level 11, State 1, Line 1
Cannot open database "MyDatabase" requested by the login. The login failed.
18456 和 4060 错误消息重复出现,直到 60 秒后查询超时。
在 Server1 上,我可以看到尝试登录“MyDatabase”的重复失败。它失败了,因为 Server1 是镜像。我没有看到尝试连接到作为主体的 Server2。
如果我重新创建以 Server2 作为主服务器,将 Server1 作为镜像服务器的链接服务器,它将一直工作,直到我故障回复到 Server1。
镜像服务器是 SQL Server 2012,我尝试在其上创建链接服务器的机器是 SQL Server 2005,但在 SQL Server 2008 R2 机器上创建链接服务器时,我也遇到了同样的问题。
我错过了什么?
谢谢!
更新
我已经取得了进展。昨天,当我第一次设置时,我可以发誓它工作过一次。我永远无法复制它。然后,今天,我让它工作了一次。我可以从 Server1 故障转移到 Server2(反之亦然)一次。链接服务器将在故障转移后工作,但如果我故障转移回原始服务器,它就会停止工作。在具有链接服务器的服务器上重新启动 SQL Server 服务将使其再次工作(对于 1 次故障转移)。让事情一夜之间也必须工作,因为我今天第一次尝试它就奏效了。
创建一个新的链接服务器(使用不同的名称)不起作用,所以我猜测 SQL Native Client 驱动程序正在缓存一些东西。
另一个更新
我确实让链接服务器(如上所述)在 SQL Server 2012 Express 实例上正常工作。然后,我在另一个 SQL Server 2012 Standard 实例上进行了尝试。那没起效。可能相关的一件事是 Server1 和 Server2 与 Server3 位于不同的不受信任域中。但是,由于我使用的是 sql server 身份验证,所以我认为它不应该。运行良好的 Express 实例位于同一个不受信任的域中。
我服务器的 G: 驱动器空间很快用完了。它主要包含系统和用户数据库的数据文件 (*.mdf)。全文目录也存在于该驱动器上。
IT 添加了一个更大的 E: 驱动器。
我想:
这会导致 SQL Server 出现任何问题吗?在该过程结束时,所有文件都将位于 G:\ 驱动器上;只是不在原来的 G:\ 驱动器上。