2017-07-25 67 views
0

我目前的工作是应该每天早晨连接到我的公司数据库中的PowerShell脚本,检查在SCCM未决软件批准申请,并发送电子邮件对相关人员一个SQL Server数据库,允许他们使用执行PowerShell脚本的链接接受或拒绝请求。如何连接到使用PowerShell的

我的问题是关于目前的第一步,这是连接到数据库。

我创建了一个SQL Server的帐户,与我能够连接到Microsoft SQL Server Management Studio中的服务器上,但不与我的脚本连接...

我发现这个代码在this website ,人们显然说,这是工作,但我总是得到一个超时错误,当我运行它:

Function GetPendingRequests { 
param (
    [string]$SQLServer, 
    [string]$SQLDBName, 
    [string]$uid, 
    [string]$pwd 
) 
$SqlQuery = "select * from [Database].[dbo].[UserApplicationRequests]" 

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User Id = $uid; Password = $pwd;" 

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
$SqlCmd.CommandText = $SqlQuery 
$SqlCmd.Connection = $SqlConnection 

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
$SqlAdapter.SelectCommand = $SqlCmd 

$DataSet = New-Object System.Data.DataSet 
$SqlAdapter.Fill($DataSet) 

$SqlConnection.Close() 

return $DataSet.Tables[0] 
} 

顺便说一句,在[数据库]包含真正的数据库名和变量是正确的..我已经检查了以下几点:

  • 服务器接受Windows和SQL Server身份验证
  • 该帐户可以访问Microsoft SQL Server Management Studio中的数据库,并读取数据我想
  • 方式的计算机检索服务器IP成功

有没有人知道我做错了什么,以及为什么这个PowerShell功能无法连接到数据库?

+0

是SQL服务器上启用TCP/IP协议? –

+0

是的,它启用了 –

+0

你能使用[SSMS](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms)从客户机上运行查询,使用SQL帐户? –

回答

1

您是否收到任何类型的错误,当您运行脚本?

这有可能是你需要指定数据库上(尤其是如果它在远程计算机上)

例如服务器:

$SqlConnection.ConnectionString = "Server = localhost\MySqlServerInstance; Database = $SQLDBName; User Id = $uid; Password = $pwd;

这当然可以作为参数完成,这只是一个例子。

关于连接字符串的更多信息,请看https://www.connectionstrings.com/sql-server/https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx

这只是一个猜测,因为我们没有关于运行脚本时发生的实际情况的很多信息(也不知道如何调用它),所以请随时以其他细节做出响应,我们会从那里出发!

+0

我会尽量明确: 我在客户端计算机上的Powershell控制台中运行脚本。我尝试使用直接在SQL Server上创建的SQL帐户登录,并且可以直接使用Microsoft SQL Server管理器登录。但是当我运行这个脚本时,我得到一个超时错误,说服务器在14秒内没有发送任何响应... –