我有一个网络,其中多个用户在多用户客户端/服务器模式下使用 Office Accounting 2009。OA建立在SQL Server之上。一台 PC 充当“服务器”并具有 SQl Server 实例,其他 PC 只安装了应用程序而没有 SQL 实例,所有应用程序都远程连接到“服务器”上的 SQL 实例。
我在这里宽松地使用术语“服务器”,它只是一个普通工作站,恰好被指定为服务器并运行 SQL 实例。没有 NT 域,所有用户帐户都是本地帐户。
OA 在多用户模式下的工作方式是要求每个用户在客户端和“服务器”PC 上都有一个具有相同用户名和密码的本地帐户。这一直运行良好,Windows 8 没有出现。我使用我的“Microsoft 帐户”又名 LiveID 登录 Windows 8。
Office Accounting 运行良好并尝试连接到数据库,但失败,“您没有执行此操作的权限”。
在 SQL 日志中,我收到此错误:
2012-10-28 17:54:01.32 登录错误:18456,严重性:14,状态:11。 2012-10-28 17:54:01.32 用户“SERVER\Guest”的登录登录失败。原因:基于令牌的服务器访问验证因基础设施失败
SERVER
是服务器的主机名。所以它似乎被认证为“客人”?
为了验证这一点,我在“服务器”PC 上启用了 Guest 帐户,然后在 Office Accounting 中将 Guest 添加为允许的用户(这只是在 SQL 中创建用户并为其赋予适当的数据库角色)。
果然,我的 Windows 8 PC 在使用 Office Accounting 时能够连接到数据库。
显然,从安全和审计的角度来看,让用户以“访客”身份进行身份验证很糟糕。所以我需要一些关于如何解决这个问题的想法。我试过将 Windows 8 PC 切换到“本地帐户”,这也有效,但需要放弃 Windows 8 PC 上的重要功能。我真正需要的是一种强制 Windows 8 PC 在连接到远程 SQL 实例时使用一组特定凭据的方法。Office Accounting 采用登录用户名,即我的 LiveID,不对应任何 Windows 用户名。
有人解决了这个问题吗?
从等式中删除 Office Accounting,您可能想通过使用本地用户名和密码登录到 Windows 8 计算机并连接到目标计算机上的共享来对此进行测试。通常,Windows 将尝试使用当前凭据进行连接。如果这不起作用,则似乎是 Windows 问题,与 SQL 或 Office Accounting 无关。可能更容易测试和本地化。
下一步将首先尝试建立连接,例如
net use x: \\targetcomputer\sharename
,然后运行 Office Accounting。尽管Office Accounting不允许通过其用户界面进行此操作,但我发现手动添加我的完整 LiveID(完整的电子邮件地址格式)作为数据库登录名(在 OA 数据库上具有适当的映射和用户角色)使我能够成功地通过数据库服务器。登录名是使用 SQL Server 身份验证添加的,密码与用于登录 LiveID 的密码相同。
为什么我以前从未想过这个,我不确定 - 也许是因为将电子邮件地址作为 SQL 登录名看起来很奇怪。
看来您已成功通过使用 Windows LiveID 帐户登录从 Windows 8 打开公司文件。但是,根据您的建议,我遵循了它并在 Microsoft SQL Server Management Studio 中创建了新的登录帐户。不幸的是,我还不能设置和运行这些东西。
这是来自 SQL 服务器日志的记录。“用户 '' 登录失败。该用户未与受信任的 SQL Server 连接相关联。[客户端:192.168.1.102]”
好吧,如果我将 Windows 8 用户帐户更改为本地帐户,并在运行 Windows XP 的服务器上创建相同的帐户,那么一切正常。
在这个问题上的帮助将非常受欢迎。
最好的问候,萨斯