Mik*_*e J 4 sql-server powershell windows-security
我有一个无法使用域凭据连接到SQL Server的问题。使用SA凭据可以正常工作,查询将按预期运行。但是,当我使用域凭据时,会出现错误。
这是脚本:
$SQLServer = 'server.domain.com'
$SQLDBName = 'DBname'
$username = "DOMAIN\user"
$password = "password"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
#--> With SA, it works, with DOMAIN creds, it does not
#$SqlConnection.ConnectionString = "Server=$SQLServer; Database=$SQLDBName; User ID=sa; Password=SApassword;"
$SqlConnection.ConnectionString = "Server=$SQLServer; Database=$SQLDBName; User ID=$username; Password=$password;"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = 'select count (*) from my.table'
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
Run Code Online (Sandbox Code Playgroud)
这是我运行脚本时遇到的错误:
使用“ 1”参数调用“填充”的异常:“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问该服务器。请验证实例名称是否正确并且该SQL Server配置为允许远程连接(提供程序:命名管道提供程序,错误:40-无法打开与SQL Server的连接)
在C:\ scripts \ PowerShell \ myscript.ps1:28 char:1
+ $ SqlAdapter.Fill($ DataSet)
+ ~~~~~~~~~~~~~~~~~~~~~~~ ~~
+ CategoryInfo:未指定:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:SqlException
我应该指出一个事实,我正在从不在域中的计算机连接到SQL Server(因此,我不能使用任何类型的身份验证通过)。
关于为何无法使用域凭据进行连接的任何想法?我关注了其他文章,这些文章提供了有关检查连接,防火墙等的建议。所有这些都按工作顺序运行,并且脚本以sa(本地)用户的身份完美运行。只是不在域上。
小智 5
如果您有SQL凭据,请使用以下命令:
$ConnectionString = server=*serverName*;database=*databaseName*;user id=*userName*;password=*passWord*;
Run Code Online (Sandbox Code Playgroud)
如果您具有域凭据,请使用以下命令:
$ConnectionString = "server=*serverName*;database=*databaseName*;user id=*domain\username*;password=*passWord*;trusted_connection=true;"
Run Code Online (Sandbox Code Playgroud)
这在我的环境中有效。当然,之后您可以:
$Connection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
Run Code Online (Sandbox Code Playgroud)