Utilisation du mode de capture
Les programmes SMO peuvent capturer et enregistrer les instructions Transact-SQL équivalentes publiées par le programme à la place ou en plus des instructions exécutées par le programme. Le mode de capture est activé au moyen de l'objet ServerConnection ou de la propriété ConnectionContext de l'objet Server.
Exemple
Pour utiliser un exemple de code fourni, vous devrez sélectionner l'environnement, le modèle et le langage de programmation dans lequel créer votre application. Pour plus d'informations, consultez « Procédure : créer un projet Visual Basic SMO dans Visual Studio .NET » ou « Procédure : créer un projet Visual C# SMO dans Visual Studio .NET » dans la documentation en ligne de SQL Server.
Activation du mode de capture en Visual Basic
Cet exemple de code active le mode de capture, puis affiche les commandes Transact-SQL conservées dans la mémoire tampon de capture.
'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
Activation du mode de capture en Visual C#
Cet exemple de code active le mode de capture, puis affiche les commandes Transact-SQL conservées dans la mémoire tampon de capture.
{
//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;
}