Monday, May 9, 2016

Accessing SQL Server from PowerShell

Here's a sample program that allows you to access SQL Server from PowerShell. It may work with other versions but was tested only with PowerShell 4.0.

  1. # sqltst.ps1 -- just a test program  
  2. #  
  3.   
  4. $SqlConn = 0  
  5. $Server = 'Your Server Name'  
  6. $Database = 'Your Database'  
  7. $UserName = 'Server Login'  
  8. $Password = 'Login Password'  
  9.   
  10. function getEnvId  
  11. {  
  12.     $envName = $args[0];  
  13.     $sqlStmt = @'  
  14. SELECT [envId]  
  15.   FROM [PEDB].[dbo].[Environments]  
  16. WHERE [envName] = @envName  
  17. '@  
  18.     $sth = New-Object -typeName System.Data.SqlClient.SqlCommand($sqlStmt, $SqlConn)  
  19.     $Null = $sth.Parameters.Add('@envName', [System.Data.SqlDbType]::NVarChar, 80)  
  20.     $sth.Parameters['@envName'].Value = $envName  
  21.     $prevErrAct = $ErrorActionPreference  
  22.     $ErrorActionPreference = 'Stop'  
  23.     try {  
  24.         $res = $sth.ExecuteReader()  
  25.     }  
  26.     catch {  
  27.         Write-Error "Cannot execute SELECT -- $($_.Exception.Message)"  
  28.     }  
  29.     $ErrorActionPreference = $prevErrAct  
  30.     $envId = 0  
  31.     while ($res.Read()) {  
  32.         $envId = $res['envId']  
  33.     }  
  34.     $res.Close()  
  35.     $envId  
  36. }  
  37.  
  38. # open the connection  
  39. $dsn = "Server=$Server;Database=$Database;Integrated Security=False;UID=$Username;PWD=$Password";  
  40. $ErrorActionPreference = 'Stop'  
  41. try {  
  42.     $SqlConn = New-Object -typeName System.Data.SqlClient.SqlConnection  
  43.     $SqlConn.ConnectionString = $dsn  
  44.     $SqlConn.Open()  
  45. }  
  46. catch {  
  47.     Write-Error "Cannot open connection to $Server"  
  48.     Write-Error " -- $($_.Exception.Message)"  
  49. }  
  50. $ErrorActionPreference = 'Continue'  
  51.  
  52. # get the environment id for the name  
  53. getEnvId('PROD')  

No comments:

Post a Comment