Практическое руководство. Создание и запуск хранимой процедуры SQL Server при помощи интеграции со средой CLR
Создайте хранимые процедуры SQL, добавив элементы Хранимая процедура в проекты базы данных SQL Server со средой CLR. После успешного развертывания на сервере SQL Server хранимые процедуры, созданные в управляемом коде, вызываются и выполняются как любые другие хранимые процедуры.
Примечание
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от действующих параметров или выпуска.Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров.Дополнительные сведения см. в разделе Работа с параметрами.
Создание сохраненной процедуры SQL Server
Для создания сохраненной процедуры SQL Server:
Откройте существующий проект базы данных SQL CLR или создайте новый. Дополнительные сведения см. в разделе Практическое руководство. Создание проекта для объектов базы данных, использующих интеграцию SQL Server со средой CLR.
В меню Проект выберите команду Добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите Хранимая процедура.
Введите Имя для новой сохраненной процедуры.
Добавьте код для запуска при выполнении сохраненной процедуры. Ознакомьтесь с первым примером, следующим за этой процедурой.
В окне Обозреватель решений откройте папку TestScripts и дважды щелкните файл Test.sql.
Примечание
В качестве скрипта отладки по умолчанию можно указать другие скрипты.Дополнительные сведения см. в разделе Практическое руководство. Изменение скрипта Test.sql для запуска объектов, использующих интеграцию SQL Server со средой CLR.
Добавьте код в файл Test.sql для выполнения хранимой процедуры. Ознакомьтесь со вторым примером, следующим за этой процедурой.
Нажмите клавишу F5, чтобы скомпилировать, развернуть и выполнить отладку сохраненной процедуры. Дополнительные сведения о развертывании без отладки см. в разделе Практическое руководство. Развертывание элементов проекта базы данных SQL в среде CLR на сервере SQL Server.
Важно!
SQL Server 2005 и SQL Server 2008 поддерживают только проекты SQL Server, созданные с использованием версий 2.0, 3.0 и 3.5 платформы .NET Framework.Если вы попробуете развернуть SQL Server проекта SQL Server 2005 или SQL Server 2008, появляется сообщение об ошибке: Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(где имя_сборки — это имя сборки, развертывания).Дополнительные сведения см. в разделе Практическое руководство. Создание проекта для объектов базы данных, использующих интеграцию SQL Server со средой CLR.
Просмотр результатов в Окно выходных данных и выберите Показать вывод из: База данных вывода.
Пример
В следующем примере кода создается сохраненная процедура, которая вставляет запись в таблицу Currency базы данных Adventure Works. После создания сохраненной процедуры разверните ее на SQL Server. Дополнительные сведения см. в разделе Практическое руководство. Развертывание элементов проекта базы данных SQL в среде CLR на сервере SQL Server.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Partial Public Class StoredProcedures
<SqlProcedure()>
Public Shared Sub InsertCurrency(
ByVal currencyCode As SqlString, ByVal name As SqlString)
Using conn As New SqlConnection("context connection=true")
Dim InsertCurrencyCommand As New SqlCommand()
Dim currencyCodeParam As New SqlParameter("@CurrencyCode", SqlDbType.NVarChar)
Dim nameParam As New SqlParameter("@Name", SqlDbType.NVarChar)
currencyCodeParam.Value = currencyCode
nameParam.Value = name
InsertCurrencyCommand.Parameters.Add(currencyCodeParam)
InsertCurrencyCommand.Parameters.Add(nameParam)
InsertCurrencyCommand.CommandText =
"INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" &
" VALUES(@CurrencyCode, @Name, GetDate())"
InsertCurrencyCommand.Connection = conn
conn.Open()
InsertCurrencyCommand.ExecuteNonQuery()
conn.Close()
End Using
End Sub
End Class
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
[SqlProcedure()]
public static void InsertCurrency_CS(
SqlString currencyCode, SqlString name)
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
SqlCommand InsertCurrencyCommand = new SqlCommand();
SqlParameter currencyCodeParam = new SqlParameter("@CurrencyCode", SqlDbType.NVarChar);
SqlParameter nameParam = new SqlParameter("@Name", SqlDbType.NVarChar);
currencyCodeParam.Value = currencyCode;
nameParam.Value = name;
InsertCurrencyCommand.Parameters.Add(currencyCodeParam);
InsertCurrencyCommand.Parameters.Add(nameParam);
InsertCurrencyCommand.CommandText =
"INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" +
" VALUES(@CurrencyCode, @Name, GetDate())";
InsertCurrencyCommand.Connection = conn;
conn.Open();
InsertCurrencyCommand.ExecuteNonQuery();
conn.Close();
}
}
}
Добавьте код для выполнения и проверки хранимой процедуры в файл Test.sql в папке TestScripts проекта. Например, если развернута сохраненная процедура, запустите ее, вызвав EXEC <StoredProcedureName> и передав корректные параметры. Если хранимая процедура не возвращает никаких значений, вставьте дополнительный код для проверки того, что на данные повлияла хранимая процедура.
Примечание
Если образец создан с помощью Visual C#, замените InsertCurrency_CS на имя хранимой процедуры в следующем примере.
EXEC InsertCurrency 'AAA', 'Currency Test'
SELECT * from Sales.Currency where CurrencyCode = 'AAA'
См. также
Задачи
Практическое руководство. Создание и запуск триггера SQL Server при помощи интеграции со средой CLR
Пошаговое руководство. Создание хранимой процедуры в управляемом коде
Практическое руководство. Отладка хранимой процедуры SQL CLR
Ссылки
Атрибуты проектов баз данных SQL в среде CLR и объектов баз данных
Основные понятия
Введение в интеграцию SQL Server со средой CLR (ADO.NET)
Преимущества использования управляемого кода для создания объектов баз данных
Начало командной разработки баз данных, ссылающихся на объекты SQLCLR
Создание объектов SQL Server в управляемом коде