Demonstra Passo a passo: Criar um procedimento armazenado no código gerenciado
Você pode escrever procedimentos armazenados para Microsoft SQL Server 2005 e SQL Server 2008 de bancos de dados em código gerenciado usando.NET Framework, tais como Visual Basic e Visual C#. Procedimentos armazenados que são escritos em código gerenciado são chamados de procedimentos de SQL Server Common Language Runtime armazenado ou procedimentos armazenados CLR de SQL.
Você pode criar os procedimentos armazenado de SQL adicionando Procedimento armazenado itens SQL CLR projetos de banco de dados. Depois de implantar procedimentos armazenados que você criou no código gerenciado, esses procedimentos são chamados e executados como qualquer outro procedimento armazenado.
Tarefas ilustradas nesta explicação passo a passo incluem o seguinte:
Criar uma nova SQL projeto de banco de dados de CLR
Criar um procedimento armazenado no código gerenciado
Implantando o procedimento armazenado para um SQL Server 2008 banco de dados
Criar um script para testar o procedimento armazenado no banco de dados
Consultar dados no banco de dados para confirmar que o procedimento armazenado executa corretamente
Pré-requisitos
Para concluir esta explicação passo a passo, você precisa:
- Uma conexão de banco de dados de exemplo AdventureWorks2008 em execução no SQL Server 2008. Para obter mais informações, consulte o Exemplos de produtos do Microsoft SQL Server página no site da Microsoft.
Criando o projeto
Para criar o novo projeto de banco de dados do CLR de SQL
No menu File, crie um novo projeto.
Selecione Projeto de banco de dados do CLR SQL, nomeie o projeto SQLCLRStoredProcedure e clique em OK. Para obter mais informações, consulte Como: Criar um projeto para os objetos de banco de dados que usam a integração de tempo de execução de linguagem comum SQL Server.
Conectando-se a um banco de dados SQL Server 2008
Esta explicação passo a passo requer uma conexão com o banco de dados de exemplo AdventureWorks2008 em execução no SQL Server 2008. Se uma conexão de banco de dados de exemplo AdventureWorks2008 está disponível em Server Explorer, ele será listado na Add Database Reference Dialog Box.
Para se conectar ao banco de dados de exemplo AdventureWorks
Conectar-se ao banco de dados de exemplo AdventureWorks2008 incluído no SQL Server 2008 completando a Add Connection caixa de diálogo. Para obter mais informações, consulte Adicionar/modificar conexão (Microsoft SQL Server).
- ou -
Selecione uma conexão existente no banco de dados de amostra de AdventureWorks2008 na Add Database Reference caixa de diálogo. Para obter mais informações, consulte Add Database Reference Dialog Box.
Configurando o projeto de banco de dados CLR de SQL
Depois de criar seu projeto de banco de dados de SQL de CLR, talvez você precise modificar várias propriedades do projeto antes de implantar com êxito seu projeto.
Para configurar as propriedades do projeto de banco de dados do CLR SQL
No Solution Explorer, selecione o projeto para o qual você deseja configurar propriedades.
Sobre o projeto menu, clique em ProjectName propriedades, onde ProjectName é o nome que você deu o CLR SQL o projeto de banco de dados.
Sobre o aplicativo tab, Assembly nome, especifique o nome que você deseja dar ao assembly que é criado a partir de seu projeto de banco de dados de SQL de CLR.
Sobre o aplicativo tab, Target Framework, clique na versão do.NET Framework que é suportado pela versão de destino do SQL Server.
Importante
SQL Server 2005e SQL Server 2008 oferece suporte somente a os projetos deSQL Server que foram criados com o.NET Framework 2.0. Se você tentar implantar um SQL Server projeto SQL Server 2005 ou SQL Server 2008, um erro será exibida: 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(onde AssemblyName é o nome do assembly que você estiver implantando).
Sobre o banco de dados tab, Proprietário do Assembly, digite o nome de um usuário ou função como o proprietário do assembly.
Importante
Esse valor deve ser o nome de uma função que o usuário atual for um membro ou o usuário atual deve ter IMPERSONATE permissão. Se você não especificar um proprietário do assembly, a propriedade é atribuída ao usuário atual. Essa configuração corresponde do AUTHORIZATION owner_name argumento para o SQL Server CREATE ASSEMBLY instrução. Para obter mais informações, consulte CREATE ASSEMBLY (Transact-sql) no site da Microsoft.
No menu File, clique em Save All.
Criando o procedimento armazenado SQL Server
Depois de criar o projeto de banco de dados CLR de SQL, adicione um procedimento armazenado a ele.
Para criar o procedimento armazenado SQL Server
No menu Project, clique em Add New Item.
No Add New Item caixa de diálogo, selecione Procedimento armazenado.
Digite InsertCurrency como o Name para o novo procedimento armazenado.
Clique em Adicionar.
Substitua o código no Code Editor com o seguinte:
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(); } } }
Implantando, Executando, e Depurando o procedimento armazenado
Após você criar um novo procedimento armazenado, ele pode ser criado, implantado no SQL Server, e depurado, pressionando F5. Primeiro, no arquivo Test.sql encontrado na pasta TestScripts do seu projeto, adicione código para executar e testar seu procedimento armazenado. Para obter mais informações sobre como criar scripts de teste, consulte Como: Edite o Script de Test. SQL para executar objetos usar a integração de tempo de execução de linguagem comum de SQL Server.
Para obter mais informações sobre como depurar SQL, consulte Debugging SQL Database Objects.
Para distribuir, e executar o procedimento armazenado InsertCurrency
No Solution Explorer, expanda a pasta TestScripts e clique duas vezes no arquivo Test.sql.
Observação
Você pode especificar outros scripts como o seu script de depuração padrão. Para obter mais informações, consulte Como: Edite o Script de Test. SQL para executar objetos usar a integração de tempo de execução de linguagem comum de SQL Server.
Substitua o código no arquivo Test.sql com o seguinte código:
'VB EXEC InsertCurrency 'AAA', 'Currency Test' SELECT * from Sales.Currency where CurrencyCode = 'AAA' //C# EXEC InsertCurrency_CS 'AAA', 'Currency Test' SELECT * from Sales.Currency where CurrencyCode = 'AAA'
Pressione F5 para criar, implantar e depurar o procedimento armazenado. Para obter informações sobre como implantar sem depuração, consulte Como: Implantar itens de projeto de banco de dados do CLR de SQL um SQL Server.
Exibir os resultados mostrados na saída janela e selecione Show output from: Saída de banco de dados.
Consulte também
Tarefas
Como: Criar e executar um disparador de SQL Server usando a integração do Common Language Runtime
Como: Criar e executar um agregado de SQL Server usando a integração do Common Language Runtime
Como: Depurar um CLR SQL procedimento armazenado
Referência
Atributos para objetos de banco de dados e de projetos de banco de dados do CLR de SQL
Conceitos
Introduction to SQL Server CLR Integration (ADO.NET)
Vantagens de usar código gerenciado para criar objetos de bancos de dados