【发布时间】:2017-10-23 16:32:17
【问题描述】:
希望您能帮助我解决我面临的问题。这是一个冗长的提供上下文。简而言之,我对 SQL Server 2008 R2 数据库的 Windows 身份验证访问失败,因为它似乎试图以“NT AUTHORITY\ANONYMOUS LOGON”而不是当前用户身份访问数据库。
这是我的场景:具有多个运行独立 SQL Server 数据库的服务器的服务器场,需要在其上运行许多 PowerShell 脚本,这些脚本连接到数据库并运行一些查询并根据查询对某些数据库进行一些更新表。我们在 Windows 身份验证登录到数据库时失败(与 SQL Server Mgmt Studio v10 一起工作正常)。
看起来像这样:
- win7pc PS C:> Enter-PSSession -ComputerName winsvr2k8r2
- [winsvr2k8r2]: PS c:\users\svs_acct1>
-
[winsvr2k8r2]: PS c:\users\svs_acct1> 设置位置 C:
- 注意:有一个脚本目录是配置文件中
$env:PATH集的一部分
- 注意:有一个脚本目录是配置文件中
[winsvr2k8r2]: PS c:\users\svs_acct1> 。 .\users\svs_acct1\bin\Run-AdminTasks
脚本输出
Loading AD module ...
Setting Global Variables ...
I am user: domreff1\dbappuser
Initiating DB Connection using windows auth to: sTango @ hgr23992\atr77504
with connect string ...
Data Source=hgr23992\atr77504;Initial Catalog=sTango;Integrated Security=SSPI
错误
使用“0”参数调用“Open”的异常:“用户'NT AUTHORITY\ANONYMOUS LOGON'登录失败。”
在 C:\users\svs_acct1\bin\Run-AdminTasks:21 char:20
+ $SqlConnection.open + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
脚本中相关的数据库连接元素:
$SQLServer = "hgr23992\atr77504";
$SQLDBName = "sTango";
$SQLDBUser = [Security.Principal.WindowsIdentity]::GetCurrent().Name;
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$SQLServer;Initial Catalog=$SQLDBName;Integrated Security=SSPI"
$SqlConnection.open();
我浏览了各种帖子并尝试了多种不同的连接字符串方式,例如
Data Source=$SQLServer;Initial Catalog=$SQLDBName;Integrated Security=[Yes|True|SSPI]
没有喜悦。
关于问题可能是什么以及为什么数据库连接似乎反映了与我运行脚本不同的上下文/用户的任何想法?
【问题讨论】:
标签: sql-server authentication sql-server-2012 powershell-2.0 windows-authentication