59 lines
2.0 KiB
PowerShell
59 lines
2.0 KiB
PowerShell
|
function Get-CatalogsFromMaster {
|
|||
|
<#
|
|||
|
.SYNOPSIS
|
|||
|
Returns a collection of tenants from the master database as a hashtable
|
|||
|
#>
|
|||
|
[CmdletBinding()]
|
|||
|
param(
|
|||
|
[Parameter(Position = 0, Mandatory = $false)]
|
|||
|
[string]$ConnectionString
|
|||
|
)
|
|||
|
|
|||
|
if ([String]::IsNullOrEmpty($ConnectionString)) {
|
|||
|
$masterConnectionString = Get-MasterConnectionString
|
|||
|
}
|
|||
|
else {
|
|||
|
$masterConnectionString = $ConnectionString
|
|||
|
}
|
|||
|
|
|||
|
$conn = New-Object System.Data.SqlClient.SqlConnection
|
|||
|
$conStrBuilder = New-Object System.Data.SqlClient.SqlConnectionStringBuilder($masterConnectionString)
|
|||
|
|
|||
|
$conn.ConnectionString = $conStrBuilder.ToString()
|
|||
|
|
|||
|
[hashtable[]]$databases = @()
|
|||
|
|
|||
|
try {
|
|||
|
$conn.Open()
|
|||
|
$query = New-Object System.Data.SqlClient.SqlCommand("SELECT Name, BankUrlSignatures, BankAdminUrlSignatures, DataSource, Catalog FROM dbo.Tenant", $conn)
|
|||
|
$results = $query.ExecuteReader()
|
|||
|
|
|||
|
if (!$results.HasRows) {
|
|||
|
Write-Warning (" No rows were returned from the tenant table.`nServer: {0}`nDatabase: {1}" -f $conStrBuilder.DataSource, $conStrBuilder.InitialCatalog)
|
|||
|
return $null
|
|||
|
}
|
|||
|
|
|||
|
while ($results.Read()) {
|
|||
|
$tenantConStringBuilder = $conStrBuilder
|
|||
|
$tenantConStringBuilder.'Data Source' = $results.Item(3)
|
|||
|
$tenantConStringBuilder.'Initial Catalog' = $results.Item(4)
|
|||
|
$databases += @{Name = $results.Item(0); Signature = $results.Item(1); AdminSignature = $results.Item(2); DataSource = $results.Item(3); Catalog = $results.Item(4); ConnectionString = $tenantConStringBuilder.ToString()}
|
|||
|
}
|
|||
|
|
|||
|
return $databases
|
|||
|
}
|
|||
|
catch {
|
|||
|
Write-Warning "An exception occurred while trying to pull tenants from the master database"
|
|||
|
Write-Warning $_ | Format-List -Force
|
|||
|
return $null
|
|||
|
}
|
|||
|
finally {
|
|||
|
if ($conn.State -ne [System.Data.ConnectionState]::Closed) {
|
|||
|
$conn.Close()
|
|||
|
}
|
|||
|
|
|||
|
$conn = $null
|
|||
|
}
|
|||
|
}
|
|||
|
|