Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’exemple Hello World illustre les opérations de base impliquées dans la création, le déploiement et le test d’une procédure stockée basée sur l’intégration basée sur l’intégration (CLR) simple. Cet exemple montre également comment retourner des données via un enregistrement, qui est construit dynamiquement par la procédure stockée et retourné à l’appelant.
La HelloWorld procédure stockée retourne la chaîne « Hello world ! » dans un jeu de résultats composé d’une ligne. Cet exemple illustre certaines utilisations pour les classes Microsoft.SqlServer.Server.SqlMetaData, Microsoft.SqlServer.Server.SqlDataRecord et Microsoft.SqlServer.Server.Pipe.
Conditions préalables
Pour créer et exécuter ce projet, les logiciels suivants doivent être installés :
SQL Server ou SQL Server Express. Vous pouvez obtenir SQL Server Express gratuitement à partir de la documentation et des exemples de la documentation SQL Server Express et du site Web Exemples
Base de données AdventureWorks disponible sur le site web du développeur SQL Server
Sdk .NET Framework 2.0 ou version ultérieure ou Microsoft Visual Studio 2005 ou version ultérieure. Vous pouvez obtenir gratuitement le Kit de développement logiciel (SDK) .NET Framework.
En outre, les conditions suivantes doivent être remplies :
L’instance SQL Server que vous utilisez doit avoir activé l’intégration clR.
Pour activer l’intégration du CLR, procédez comme suit :
Activation de l'intégration du CLR
- Exécutez les commandes Transact-SQL suivantes :
sp_configure 'clr enabled', 1GORECONFIGUREGORemarque
Pour activer clR, vous devez disposer
ALTER SETTINGSd’une autorisation au niveau du serveur, qui est implicitement détenue par les membres dessysadminrôles serveur fixes etserveradminles rôles serveur fixes.La base de données AdventureWorks doit être installée sur l’instance SQL Server que vous utilisez.
Si vous n’êtes pas administrateur de l’instance SQL Server que vous utilisez, vous devez disposer d’une autorisation CreateAssembly pour terminer l’installation.
Génération de l’exemple
Créez et exécutez l’exemple à l’aide des instructions suivantes :
Ouvrez une invite de commandes Visual Studio ou .NET Framework.
Si nécessaire, créez un répertoire pour votre exemple. Pour cet exemple, nous allons utiliser C :\MySample.
Dans c :\MySample, créez
HelloWorld.vb(pour l’exemple Visual Basic) ouHelloWorld.cs(pour l’exemple C#) et copiez l’exemple de code Visual Basic ou C# approprié (ci-dessous) dans le fichier.Compilez l’exemple de code à partir de l’invite de ligne de commande en exécutant l’un des éléments suivants, en fonction de votre choix de langue.
vbc C:HelloWorld.vb /target:librarycsc /target:library HelloWorld.cs
Copiez le code d’installation Transact-SQL dans un fichier et enregistrez-le comme
Install.sqldans l’exemple de répertoire.Déployer l’assembly et la procédure stockée en exécutant
sqlcmd -E -I -i install.sql -v root = "C:\MySample\"
Copiez Transact-SQL script de commande de test dans un fichier et enregistrez-le comme
test.sqldans l’exemple de répertoire.Exécuter le script de test avec la commande suivante
sqlcmd -E -I -i test.sql
Copiez le script de nettoyage Transact-SQL dans un fichier et enregistrez-le comme
cleanup.sqldans l’exemple de répertoire.Exécutez le script avec la commande suivante
sqlcmd -E -I -i cleanup.sql
Exemple de code
Voici les listes de code pour cet exemple.
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void HelloWorld()
{
Microsoft.SqlServer.Server.SqlMetaData columnInfo
= new Microsoft.SqlServer.Server.SqlMetaData("Column1", SqlDbType.NVarChar, 12);
SqlDataRecord greetingRecord
= new SqlDataRecord(new Microsoft.SqlServer.Server.SqlMetaData[] { columnInfo });
greetingRecord.SetString(0, "Hello world!");
SqlContext.Pipe.Send(greetingRecord);
}
};
Visual Basic
Imports System
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Partial Public NotInheritable Class StoredProcedures
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub HelloWorld()
Dim columnInfo As New Microsoft.SqlServer.Server.SqlMetaData("Column1", _
SqlDbType.NVarChar, 12)
Dim greetingRecord As New SqlDataRecord(New _
Microsoft.SqlServer.Server.SqlMetaData() {columnInfo})
greetingRecord.SetString(0, "Hello World!")
SqlContext.Pipe.Send(greetingRecord)
End Sub
End Class
Il s’agit du script d’installation Transact-SQL (Install.sql), qui déploie l’assembly et crée la procédure stockée dans la base de données.
USE AdventureWorks
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'usp_HelloWorld')
DROP PROCEDURE usp_HelloWorld;
GO
IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'HelloWorld')
DROP ASSEMBLY HelloWorld;
GO
DECLARE @SamplesPath nvarchar(1024)
set @SamplesPath = '$(root)'
CREATE ASSEMBLY HelloWorld
FROM @SamplesPath + 'HelloWorld.dll'
WITH permission_set = Safe;
GO
CREATE PROCEDURE usp_HelloWorld
--(
-- @Greeting nvarchar(12) OUTPUT
--)
AS EXTERNAL NAME HelloWorld.[StoredProcedures].HelloWorld;
GO
Il s’agit test.sqldu test de l’exemple en exécutant la procédure stockée.
use AdventureWorks
go
execute usp_HelloWorld
USE AdventureWorks;
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'usp_HelloWorld')
DROP PROCEDURE usp_HelloWorld;
GO
La Transact-SQL suivante supprime l’assembly et la procédure stockée de la base de données.
USE AdventureWorks
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'usp_HelloWorld')
DROP PROCEDURE usp_HelloWorld;
GO
IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'HelloWorld')
DROP ASSEMBLY HelloWorld;
GO
Voir aussi
Scénarios et exemples d'utilisation pour l'intégration du CLR (Common Language Runtime)