Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  GUI  Outils  Déployer  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Planification de l'installation
Planification d'une migration
SQL Server 2005 Developer
SQL Server 2008 R2 Developer
SQL Server 2012 Developer
SQL Server 2014 Developer
SQL Server 2016 Developer
SQL Server 2017 Developer
SQL Server 2019 Developer
Type de données élémentaire
Les instructions de boucles
Référence des mots réservés
Référence des instructions
Référence des fonctions
Référence des bases de données systèmes
Référence des tables systèmes
Référence des vues systèmes
Référence des utilisateurs par défaut
Référence des Stored Procedures système
Objets de base du SQL
Gérer les données avec Transact-SQL
Langage de définition de données/Data Definition Language (DDL)
Instructions DML : Instructions INSERT, UPDATE, DELETE et MERGE
Recherche en texte intégral (Full-Text Search)
Prise en charge de JSON dans SQL Server
STORED PROCEDURES
Les opérations
Activer l'intégration de SQL Server de CLR à l'aide de Transact-SQL
Afficher l'historique des requêtes SQL
Afficher tous les index dans une base de données SQL Server
Afficher toutes les tables dans une base de données
Comment identifier les requêtes SQL d'exécution lente dans SQL Server
Exporter la base de données SQL Server dans un fichier SQL
Exporter des tables dans un fichier .SQL avec Microsoft SQL Server Management Studio
Obtenir le nom du serveur et des bases de données dans SQL Server
SQL Server Management Studio (SSMS)
DBeaver
HeidiSQL
Navicat
SQL Server Analytic Services (SSAS)
SQL Server Data Tools (SSDT)
SQL Server Integration Services (SSIS)
SQL Server Reporting Services (SSRS)
sqlcmd
SQL Data Compare (Redgate)
SSIS avec SQL Server Management Studio (SSMS)
SSIS avec Visual Studio 2017
Références des codes d'erreur du SQL Server
Référence de termes et du vocabulaire
Préface
Notes légal
Dictionnaire
Recherche

Activer l'intégration de SQL Server de CLR à l'aide de Transact-SQL

Vous travaillez en tant qu'administrateur de base de données SQL Server. Dans votre entreprise, il existe une application de base de données s'étant développée à un point devant être déplacée vers un nouveau serveur avec plus de ressources. Vous effectuez la migration du serveur et tout se passe bien sans aucun problème. Quelques minutes après la fin de la migration, votre téléphone se met à sonner et des courriels commencent à inonder votre boîte de réception en se plaignant que l'une des fonctionnalités de l'application ne fonctionne pas comme prévu. Après quelques recherches, l'équipe de développement vous indique que la fonctionnalité défaillante utilise une STORED PROCEDURE de CLR semblant ne pas fonctionner et on vous demande si CLR est activé dans la nouvelle instance SQL Server. C'est situation arrive parfois, car le CLR n'est pas activé par défaut dans la base de données SQL Server.

Solution

L'intégration CLR est l'une des fonctionnalités les plus négligées de SQL Server. Le, CLR, tirant son nom de l'anglicisme Common Language Runtime, est une composante de machine virtuelle du cadre d'application .NET de Microsoft gérant l'exécution des programmes .NET. L'intégration CLR permet d'utiliser des assemblys utilisateur lors du codage d'une solution de base de données dans SQL Server. Il était censé être à la fois une amélioration et un futur remplacement des STORED PROCEDURE étendues, étant un type spécial de STORED PROCEDURE écrite en langage de programmation C et compilée en code machine en tant que bibliothèque DLL.

Intégration CLR avec SQL Server

La fonctionnalité d'intégration CLR a été ajoutée dans SQL Server 2005, étant la première version publiée sans le code Sybase hérité. Au début du 21e siècle, Microsoft a décidé d'introduire le cadre d'application .NET dans le cadre de la suite de développement Visual Studio. Si nous faisons une petite recherche historique, nous découvrirons que les gens de Redmond avaient besoin d'un produit pour concurrencer la plate-forme Java de Sun Microsystems. L'introduction du cadre d'application .NET dans le SQL Server était également une réponse à l'adoption par Oracle de Java comme langage de programmation pour créer des STORED PROCEDURE et des applications côté serveur. Comme nous le savons, Sun Microsystems a été racheté par Oracle Corporation.

Prérequis avant d'activer le CLR dans SQL Server

Il existe un scénario dans lequel vous ne pouvez pas utiliser CLR. Si vous utilisez le bassin léger (mode fibre), vous ne pourrez pas activer le CLR à moins que vous ne désactiviez le bassin léger. En passant, en activant les fonctionnalités du mode fibre dépendant du CLR, telles que le type de données de hiérarchie, la réplication et la gestion basée sur des stratégies, cela ne fonctionnera pas correctement ou ne fonctionnera pas du tout.

Si vous souhaitez activer le CLR, la première étape que vous devez faire est de vérifier si votre instance s'exécute en mode fibre. Vous pouvez le vérifier en exécutant le script suivant :

  1. EXEC sp_configure 'show advanced', 1;
  2. RECONFIGURE
  3. GO
  4.  
  5. EXEC sp_configure 'lightweight pooling';
  6. GO

La première requête du script utilise la STORED PROCEDURE système sp_configure pour modifier l'option de configuration "show advanced" de 0 (désactivé) à 1 (activé), afin que nous puissions voir les options de configuration avancées. Afin d'appliquer les modifications, nous exécutons l'instruction RECONFIGURE. Enfin, nous pouvons voir toutes les options de configuration en exécutant sp_configure seul. Jetez un oeil à la capture d'écran suivante pour la voir plus clairement en regardant l'exécution du script précédent.

La dernière exécution de sp_configure renvoie un tableau montrant l'état de l'option de configuration «lightweight pooling», qui dans ce cas est désactivée. Voici un aperçu :

Colonne Description
name Il s'agit du nom de l'option de configuration.
minimum La valeur minimale autorisée pour l'option de configuration.
maximum La valeur maximale autorisée pour l'option de configuration.
config_value La valeur ayant été définie pour l'option de configuration.
run_value La valeur en cours d'exécution de l'option de configuration.

Activation de l'intégration CLR dans SQL Server

Pour activer l'intégration CLR, nous devons modifier la valeur de l'option de configuration "clr enabled" de 0 à 1 en utilisant la STORED PROCEDURE système sp_configure. Dans le script suivant, nous affichons l'état actuel de l'intégration CLR, puis l'affichons et enfin nous le réaffichons à nouveau :

  1. EXEC sp_configure 'clr enabled';
  2.  
  3. EXEC sp_configure 'clr enabled', 1;
  4. RECONFIGURE;
  5.  
  6. EXEC sp_configure 'clr enabled';

Dans la capture d'écran suivante, vous pouvez voir l'exécution du script ci-dessus et montrer que CLR est maintenant activé ;:

Considérations de sécurité pour SQL Server CLR

Après avoir activé l'intégration CLR, vous devez vous concentrer sur son utilisation et sa sécurité. À partir de SQL Server version 2017, il existe une nouvelle option de configuration nommée "clr strict security" étant activée par défaut et interprète tous les assemblys comme "unsafe". Lorsque l'option de sécurité stricte CLR est activée, tous les assemblys n'étant pas signés ne se chargeront pas correctement. Pour éviter cela, vous devrez recréer les assemblys avec la signature d'un certificat ou d'une clé asymétrique qui a une connexion correspondante avec l'autorisation UNSAFE ASSEMBLY sur le serveur. Une autre option consiste à définir la propriété Trustworthy de la base de données sur ON et à remplacer le propriétaire de la base de données par une connexion dont l'autorisation «unsafe assembly» est activée sur le serveur. Cette option n'est pas recommandée par Microsoft et doit être évitée.

Voir également

Référence des opérations

PARTAGER CETTE PAGE SUR
Dernière mise à jour : Vendredi, le 9 octobre 2020