Utilizzo della modalità di acquisizione
I programmi SMO possono acquisire e registrare le istruzioni Transact-SQL equivalenti eseguite dal programma al posto delle, o oltre alle, istruzioni eseguite dal programma. Per abilitare la modalità di acquisizione, utilizzare l'oggetto ServerConnection oppure la proprietà ConnectionContext dell'oggetto Server.
Esempio
Per utilizzare qualsiasi esempio di codice fornito, è necessario scegliere l'ambiente di programmazione, il modello di programmazione e il linguaggio di programmazione per la creazione dell'applicazione. Per ulteriori informazioni, vedere "Procedura: Creare un progetto Visual Basic SMO in Visual Studio .NET" o "Procedura: Creare un progetto Visual C# SMO in Visual Studio .NET" nella documentazione online di SQL Server.
Abilitazione della modalità di acquisizione in Visual Basic
Questo esempio di codice consente di abilitare la modalità di acquisizione e di visualizzare quindi i comandi Transact-SQL inclusi nel buffer di acquisizione.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Set the execution mode to CaptureSql for the connection.
srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.CaptureSql
'Make a modification to the server that is to be captured.
srv.UserOptions.AnsiNulls = True
srv.Alter()
'Iterate through the strings in the capture buffer and display the captured statements.
Dim s As String
For Each s In srv.ConnectionContext.CapturedSql.Text
Console.WriteLine(s)
Next
'Execute the captured statements.
srv.ConnectionContext.ExecuteNonQuery(srv.ConnectionContext.CapturedSql.Text)
'Revert to immediate execution mode.
srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteSql
Abilitazione della modalità di acquisizione in Visual C#
Questo esempio di codice consente di abilitare la modalità di acquisizione e di visualizzare quindi i comandi Transact-SQL inclusi nel buffer di acquisizione.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Set the execution mode to CaptureSql for the connection.
srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.CaptureSql;
//Make a modification to the server that is to be captured.
srv.UserOptions.AnsiNulls = true;
srv.Alter();
//Iterate through the strings in the capture buffer and display the captured statements.
string s;
foreach ( s in srv.ConnectionContext.CapturedSql.Text) {
Console.WriteLine(s);
}
//Execute the captured statements.
srv.ConnectionContext.ExecuteNonQuery(srv.ConnectionContext.CapturedSql.Text);
//Revert to immediate execution mode.
srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteSql;
}