Partager via


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; 
}