Partager via


Utilisation du mode de capture

S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

Les programmes SMO peuvent capturer et enregistrer les instructions Transact-SQL équivalentes émises 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 qui est fourni, vous devrez choisir l'environnement de programmation, le modèle de programmation et le langage de programmation dans lequel créer votre application. Pour plus d’informations, consultez Créer un projet SMO Visual C# dans Visual Studio .NET.

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 ( String p_s in srv.ConnectionContext.CapturedSql.Text ) {   
   Console.WriteLine(p_s);   
}   
// Execute the captured statements.   
srv.ConnectionContext.ExecuteNonQuery(srv.ConnectionContext.CapturedSql.Text);   
// Revert to immediate execution mode.   
srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteSql;   
}