Private/Invoke-SqlAccessQuery.ps1
|
function Invoke-SqlAccessQuery { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$SqlServer, [Parameter(Mandatory)] [string]$AccessToken, [Parameter(Mandatory)] [string]$Query, [string]$Database = 'master' ) if ([string]::IsNullOrWhiteSpace($Query)) { Write-Warning 'Query is empty. Skipping execution.' return $null } try { Write-Verbose "Executing query on $SqlServer, Database: $Database" $result = Invoke-Sqlcmd ` -ServerInstance $SqlServer ` -Database $Database ` -AccessToken $AccessToken ` -Query $Query ` -QueryTimeout 30 ` -ErrorAction Stop ` -TrustServerCertificate ` -OutputSqlErrors $true return $result } catch { Write-Warning "SQL query failed on ${SqlServer}/${Database}: $($_.Exception.Message)" Write-Verbose "Failed query: $Query" if (Get-Variable -Name SyncQueryErrors -Scope Script -ErrorAction SilentlyContinue) { $script:SyncQueryErrors.Add("[${SqlServer}/${Database}] $($_.Exception.Message)") } return $null } } |