Udostępnij za pośrednictwem


Trybie przechwytywania

Programy SMO można przechwycić i rejestrowania odpowiednikiem Transact-SQL sprawozdania wydane przez program zamiast lub obok instrukcje, które są wykonywane przez program.Włącz tryb przechwytywania przy użyciu ServerConnection obiektu lub przy użyciu ConnectionContext Właściwość Server obiektu.

Przykład

Aby używać dostarczonych przykładów kodu źródłowego, należy wybrać środowisko, szablon oraz język programowania, które będą używane do tworzenia aplikacji. Aby uzyskać więcej informacji, zobacz temat „Jak utworzyć projekt SMO języka Visual Basic w programie Visual Studio .NET” lub „Jak utworzyć projekt SMO języka Visual C# w programie Visual Studio .NET” w dokumentacji SQL Server — książki online.

Włączanie trybu przechwytywania w języku Visual Basic

Poniższy przykład kodu umożliwia przechwytywanie tryb, a następnie wyświetla Transact-SQL polecenia przechowywanych w buforze przechwytywania.

'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

Włączanie trybu przechwytywania w środowisku Visual C#

Poniższy przykład kodu umożliwia przechwytywanie tryb, a następnie wyświetla Transact-SQL polecenia przechowywanych w buforze przechwytywania.

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