Hi All,
(I'm using PowerGUI to write these scripts)
When I use the following to query Linked Servers,
param (
[string]$ComputerName = "MyServerName"
)
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | out-null
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') $ComputerName
$ls = new-object Microsoft.SqlServer.Management.Smo.LinkedServer
$lss = $s.LinkedServers
foreach ($ls in $lss) {
Write-Host "------------"
Write-Host "Name: "$ls.Name | Out-Null
Write-Host "DataSource: "$ls.DataSource | Out-Null
Write-Host "DateLastModified: "$ls.DateLastModified | Out-Null
Write-Host "Catalog: "$ls.Catalog | Out-Null
Write-Host "State: "$ls.State | Out-Null
Write-Host "DataAccess: "$ls.DataAccess | Out-Null
Write-Host "<><><><><><>"
}
$ls.State = Existing.
However when I use this Insert statement into SQL Server
$cmd.CommandText = "INSERT INTO DBServerLinkedServers(DBServerPKID, `
NameAlias, `
DataSource, `
DateLastModified, `
LinkedServerCatalog, `
LinkedServerState, `
LinkedServerDataAccess)
VALUES (@DBServerPKID, `
@Name, `
@DataSource, `
@DateLastModified, `
@Catalog, `
@State, `
@DataAccess);"
$cmd.Connection = $conn
$cmd.Parameters.AddWithValue("@DBServerPKID", $DBServerPKID) | Out-Null
$cmd.Parameters.AddWithValue("@Name", $ls.Name) | Out-Null
$cmd.Parameters.AddWithValue("@DataSource", $ls.DataSource) | Out-Null
$cmd.Parameters.AddWithValue("@DateLastModified", $ls.DateLastModified) | Out-Null
$cmd.Parameters.AddWithValue("@Catalog", $ls.Catalog) | Out-Null
$cmd.Parameters.AddWithValue("@State", $ls.State) | Out-Null
$cmd.Parameters.AddWithValue("@DataAccess", $ls.DataAccess) | Out-Null
$cmd.ExecuteNonQuery() | Out-Null
$ls.State = 2.
I know that the enumeration for existing is 2, but why the difference in the return value?
Is there something going on "under the hood" that I am obviously unaware?
Thank you
gdr