-1

我有混合模式身份验证的 sql server 2008 设置。我进入 sql server 并添加了一个新的登录名并引用了一个活动目录用户。

但似乎所有基于 Windows 身份验证的东西只适用于用于登录操作系统的任何东西。所以我在我的机器上在他们的域之外,我无法连接。但是即使我使用单独的远程桌面登录远程桌面进入服务器本身,即使在那台机器上,我也无法使用活动目录用户登录,因为在登录框中,如果我选择窗口身份验证,我无法指定一个不同的名称,并且 sql server auth 说无效登录。登录 sql server 时,我看不到如何提供 windows 用户名和密码。

还有,我的 .net 应用程序呢?我不想将 sql server auth 用户名/密码硬编码到我的加密连接字符串中,我想将 Windows 活动目录用户名/密码硬编码到连接字符串中。

然后是报告服务,aarrghhh.. 报告服务是否仅适用于 Windows 登录?如果是这样,那么我坚持让上述工作。如果没有,我如何配置一个 sql server 登录来让我访问我们所有的报告?

4

2 回答 2

1

这是一个非常广泛的问题;我将对您解决的一些不同主题进行调查。我在一家托管服务提供商工作,我们有许多域之间没有信任,所以我每天都在处理这个问题。

是的,SQL Server Windows 身份验证确实希望使用运行客户端应用程序的凭据。您可以使用RunAs /netonly 开关解决此问题:

runas /netonly /user:domain\username “C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe”</p>

.NET 应用程序的身份验证是一个大话题。很多选项和章节,如果不是关于这方面的书籍。

关于 Reporting Services:大部分访问是通过浏览器进行的。因此,这将使用您提供给浏览器的任何凭据。在 IE 中,这是通过安全区域和设置来控制的,即是否应使用当前凭据或是否应提示您。

于 2012-04-12T18:18:15.430 回答
0

一些线索:

  • 如果您是外部用户并且 SQL Server 处于混合模式,那么您将更容易让 SQL 登录未映射到 AD 用户(因此您使用 SQL 身份验证而不是 Windows 身份验证)。您可能有两个 SQL 登录 - 一个用于 Windows 身份验证,第二个用于 SQL 身份验证。
  • 如果您的 .NET 应用程序没有硬编码密码,请在 ConnectionString 中使用 Windows 身份验证和可信连接模式。如果您的 .NET 应用程序是服务,请创建专用 AD 用户,然后创建映射到此 AD 用户的 SQL 登录。为您的 SQL 用户提供映射到 SQL 登录权限的任何需要。在专用 AD 用户的上下文中运行服务。如果应用程序由用户直接执行(.EXE 文件)也使用受信任的连接。为您的应用用户创建 AD 安全组。创建映射到此 AD 组的 SQL“组”登录。为您的 SQL“组”用户提供映射到 SQL 登录权限的任何需要。
  • 无法在 ConnectionString 中使用 Windows 身份验证为 SQL 登录提供登录名和密码。您使用 TrustedConnection 进行 Windows 身份验证,使用登录名/密码进行 SQL 身份验证。
  • 您可以在 SQL 会话中使用切换上下文 - EXECUTE AS,请参阅:http: //msdn.microsoft.com/en-us/library/ms181362.aspx
于 2012-04-13T00:41:56.983 回答