Поделиться через


Использование режима записи

Программы SMO могут фиксировать и записывать эквивалентные инструкции Transact-SQL вместо исполняемых программой инструкций или в дополнение к ним. Режим записи можно включить с помощью объекта ServerConnection или свойства ConnectionContext объекта Server.

Пример

Чтобы использовать какой-либо из представленных примеров кода, необходимо выбрать среду, шаблон и язык программирования, с помощью которых будет создаваться приложение. Дополнительные сведения см. в разделе «Как создать проект Visual Basic SMO в Visual Studio .NET» или «Как создать проект Visual C# SMO в Visual Studio .NET» в электронной документации по SQL Server.

Включение режима записи в языке Visual Basic

В данном примере программного кода включается режим записи, а затем выводятся зафиксированные команды Transact-SQL, содержащиеся в буфере записи.

'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

Включение режима записи в языке Visual C#

В данном примере программного кода включается режим записи, а затем выводятся зафиксированные команды Transact-SQL, содержащиеся в буфере записи.

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