Formazione
Modulo
Enumerare gli oggetti nella pipeline - Training
Questo modulo illustra come enumerare gli oggetti nella pipeline in modo che sia possibile usare un oggetto alla volta durante l'automazione.
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
SQL Server consente alle applicazioni di trovare istanze di SQL Server all'interno della rete corrente. La SqlDataSourceEnumerator classe espone queste informazioni allo sviluppatore dell'applicazione, fornendo informazioni DataTable contenenti informazioni su tutti i server visibili. Questa tabella restituita contiene un elenco di istanze del server disponibili nella rete che corrisponde all'elenco fornito quando un utente tenta di creare una nuova connessione ed espande l'elenco a discesa contenente tutti i server disponibili nella finestra di dialogo Proprietà connessione . I risultati visualizzati non sono sempre completi.
Nota
Come per la maggior parte dei servizi Windows, è consigliabile eseguire il servizio SQL Browser con i privilegi minimi possibili.
Per recuperare la tabella contenente informazioni sulle istanze di SQL Server disponibili, è prima necessario recuperare un enumeratore usando la proprietà condivisa/statica Instance :
Dim instance As System.Data.Sql.SqlDataSourceEnumerator = _
System.Data.Sql.SqlDataSourceEnumerator.Instance
System.Data.Sql.SqlDataSourceEnumerator instance =
System.Data.Sql.SqlDataSourceEnumerator.Instance
Dopo aver recuperato l'istanza statica, è possibile chiamare il GetDataSources metodo , che restituisce un contenente DataTable informazioni sui server disponibili:
Dim dataTable As System.Data.DataTable = instance.GetDataSources()
System.Data.DataTable dataTable = instance.GetDataSources();
La tabella restituita dalla chiamata al metodo contiene le colonne seguenti, tutte contenenti string
valori:
colonna | Descrizione |
---|---|
Nome del Server | Nome del server. |
InstanceName | Nome dell'istanza del server. Vuoto se il server è in esecuzione come istanza predefinita. |
IsClustered | Indica se il server fa parte di un cluster. |
Versione | Versione del server. Per esempio: - 9.00.x (SQL Server 2005) - 10.0.xx (SQL Server 2008) - 10.50.x (SQL Server 2008 R2) - 11.0.xx (SQL Server 2012) |
Tutti i server disponibili possono essere elencati o meno. L'elenco può variare a seconda di fattori quali timeout e traffico di rete. In questo modo l'elenco può essere diverso in due chiamate consecutive. Verranno elencati solo i server nella stessa rete. I pacchetti di trasmissione in genere non attraversano i router, motivo per cui potrebbe non essere visualizzato un server elencato, ma sarà stabile tra le chiamate.
I server elencati possono avere o meno informazioni aggiuntive, ad IsClustered
esempio e versione. Questo dipende dal modo in cui è stato ottenuto l'elenco. I server elencati tramite il servizio browser DI SQL Server avranno maggiori dettagli rispetto a quelli trovati tramite l'infrastruttura di Windows, che elenca solo il nome.
Nota
L'enumerazione del server è disponibile solo quando è in esecuzione in modalità attendibilità completa. Gli assembly in esecuzione in un ambiente parzialmente attendibile non potranno usarlo, anche se dispongono dell'autorizzazione SqlClientPermission CAS (Code Access Security).
SQL Server fornisce informazioni per il SqlDataSourceEnumerator tramite l'uso di un servizio Windows esterno denominato SQL Browser. Questo servizio è abilitato per impostazione predefinita, ma gli amministratori possono disattivarlo o disabilitarlo, rendendo l'istanza del server invisibile a questa classe.
L'applicazione console seguente recupera informazioni su tutte le istanze di SQL Server visibili e visualizza le informazioni nella finestra della console.
Imports System.Data.Sql
Module Module1
Sub Main()
' Retrieve the enumerator instance and then the data.
Dim instance As SqlDataSourceEnumerator = _
SqlDataSourceEnumerator.Instance
Dim table As System.Data.DataTable = instance.GetDataSources()
' Display the contents of the table.
DisplayData(table)
Console.WriteLine("Press any key to continue.")
Console.ReadKey()
End Sub
Private Sub DisplayData(ByVal table As DataTable)
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
Next
Console.WriteLine("============================")
Next
End Sub
End Module
using System.Data.Sql;
class Program
{
static void Main()
{
// Retrieve the enumerator instance and then the data.
SqlDataSourceEnumerator instance =
SqlDataSourceEnumerator.Instance;
System.Data.DataTable table = instance.GetDataSources();
// Display the contents of the table.
DisplayData(table);
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
}
private static void DisplayData(System.Data.DataTable table)
{
foreach (System.Data.DataRow row in table.Rows)
{
foreach (System.Data.DataColumn col in table.Columns)
{
Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
}
Console.WriteLine("============================");
}
}
}
Formazione
Modulo
Enumerare gli oggetti nella pipeline - Training
Questo modulo illustra come enumerare gli oggetti nella pipeline in modo che sia possibile usare un oggetto alla volta durante l'automazione.