Connexion à Microsoft SQL Server (FireDAC)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Connectivité des bases de données (FireDAC)

Cette rubrique explique comment établir une connexion à Microsoft SQL Server.

Versions prises en charge

Le pilote natif FireDAC prend en charge Microsoft SQL Server éditions Standard et Express version 2000 et ultérieure, ainsi que Microsoft SQL Azure. Pour une description sur comment établir une connexion à Microsoft SQL Server Compact Edition, voir Connexion à Microsoft SQL Server Compact Edition.

Logiciel client

Logiciel client Windows

FireDAC requiert l'installation de l'un des pilotes ODBC x86 ou x64 Microsoft SQL Server sur la station de travail :

  • Pilote ODBC SQL Server pour la connectivité de SQL Server 2000. Il est probable que le pilote ODBC est déjà installé sur votre station de travail. Sinon, voir Informations détaillées (EN).
  • SQL Native Client pour la connectivité de SQL Server 2000 et 2005. Nous vous recommandons fortement d'installer SQL Native Client si votre application doit fonctionner avec SQL Server 2005. Voir Microsoft SQL Server Native Client (EN).
  • SQL Server Native Client NN.N pour la connectivité de SQL Server 2000, 2005, 2008, 2012 et SQL Azure. Nous vous recommandons fortement d'installer SQL Server Native Client NN.N si votre application doit fonctionner avec SQL Server 2008, 2012 ou SQL Azure. Voir Microsoft SQL Server 2008 Native Client (EN).
  • SQL Server Native Client 11.0 pour la connectivité de la base de données locale.
  • ODBC Driver 13 pour la connectivité avec SQL Server 2008, 2008 R2, 2012, 2014, et 2016, et SQL Azure.

Remarque : SQL Server Native Client 10.0 (SQL Server 2008) peut échouer à appeler une procédure stockée lorsqu'il est connecté à SQL Server 2000. Le symptôme de ce problème est le message d'erreur "Syntaxe incorrecte proche de {". Dans ce cas, utilisez le pilote ODBC de la distribution SQL Server 2000 ou 2005.

Si le pilote ODBC SQL Server n'a pas été installé correctement, une exception est déclenchée lorsque vous tentez d'établir une connexion :


[FireDAC][Phys][ODBC][Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Logiciel client OS X

FireDAC requiert :

  • la bibliothèque du gestionnaire de pilote ODBC x86, UnixODBC (libodbc.dylib).
  • le pilote ODBC FreeTDS x86 (libtdsodbc.dylib).

FreeTDS peut être transféré à partir de CVS dans un dossier de votre répertoire home (plus d'infos 1) (plus d'infos 2). Pour installer FreeTDS sur OS X, utilisez les commandes :


cvs -z3 -d:pserver:anonymous@freetds.cvs.sourceforge.net:/cvsroot/freetds checkout -P freetdsc
cd freetds
./autogen.sh
./configure --with-tdsver=8.0 --with-unixodbc=/usr/local
make
sudo make install
echo [FreeTDS] > tds.driver.template
echo Description=v0.82 with protocol v8.0 >> tds.driver.template
echo Driver=/usr/local/lib/libtdsodbc.so >> tds.driver.template
odbcinst -i -d -f tds.driver.template
cd ..

Notez que vous devrez peut-être également installer l'utilitaire gawk. A ce stade, vous pouvez configurer un DSN ODBC ou tester la connexion FireDAC.

Notez que le pilote ODBC FreeTDS n'est pas aussi performant et stable que le pilote ODBC Microsoft d'origine.

Logiciel client Linux

FireDAC requiert la bibliothèque du gestionnaire de pilotes ODBC 64 bits et le pilote Microsoft ODBC Driver 11 pour SQL Server sur Linux.

Pour installer le pilote Microsoft ODBC Driver 11 pour SQL Server sur Linux :

  1. Sur Ubuntu Server 16.04 LTS, exécutez les commandes suivantes :
    sudo apt-get install openssl libkrb5-3 libc6 e2fsprogs
    sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.10
    sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0    /usr/lib/x86_64-linux-gnu/libssl.so.10
    wget http://download.microsoft.com/download/B/C/D/BCDD264C-7517-4B7D-8159-C99FC5535680/RedHat6/msodbcsql-11.0.2270.0.tar.gz
    tar -xavf msodbcsql-11.0.2270.0.tar.gz
    sudo bash msodbcsql-11.0.2270.0/install.sh install --accept-license --force
    
  2. Sur Red Hat Enterprise Linux 7, téléchargez l'installateur correspondant et suivez les instructions d'installation.

Liaison du pilote

Pour lier le pilote :

Paramètres de définition de la connexion

Pour établir la connexion au SGBD Microsoft SQL Server, la plupart des applications vous demandent de spécifier les paramètres DriverID, Server, Database, OSAuthent, User_Name et Password, voir Définition d'une connexion (FireDAC) pour plus de détails.

DriverID=MSSQL

Paramètre Description Valeur exemple
Server Nom d'un serveur exécutant SQL Server sur le réseau. La valeur doit être le nom d'un serveur sur le réseau ou le nom d'une entrée de serveur avancé SQL Server Client Network Utility.

Lorsque vous établissez une connexion à SQL Azure, vous devez ajouter le préfixe "tcp:" au début du nom du serveur.

Remarque : Un port TPC/IP alternatif peut être spécifié après le nom du serveur, séparé par une virgule.

Remarque : Pour établir une connexion à une instance nommée sur Linux, le port TPC/IP doit être spécifié après le nom du serveur, séparé par une virgule. Ne spécifiez pas le nom de l'instance.

  • 127.0.0.1\SQLEXPRESS
  • SrvHost, 4000
  • tcp:nasdfert6.database.windows.net
Port Uniquement pour OS X. Spécifie le port d'écoute de SQL Server.

Pour la plate-forme Windows, le port peut être spécifié après une virgule dans la valeur du paramètre Server. Par exemple, Server=host, port. Le port par défaut est 1433.

Database Nom de la base de données par défaut pour la connexion. Si le paramètre Database n'est pas spécifié, la base de données par défaut spécifiée pour la connexion est utilisée. Northwind
OSAuthent

Contrôle le mode d'authentification :

  • Yes -- utiliser l'authentification Windows.
  • No -- utiliser l'authentification du SGBD. C'est la valeur par défaut.
No
User_Name Nom de connexion à SQL Server, si OSAuthent=No.

Lorsque vous établissez une connexion à SQL Azure, vous devez ajouter le suffixe "@<server>" à votre nom d'utilisateur.

  • sa
  • addemo@nasdfert6
Password Mot de passe de connexion à SQL Server, si OSAuthent=No.

Notez que les mots de passe comportant '{' et '}' ne sont pas pris en charge.

Network Nom d'une bibliothèque de liaison dynamique de bibliothèque réseau. Le nom ne doit pas nécessairement inclure le chemin d'accès et ne doit pas inclure l'extension de nom de fichier .dll. dbnmpntw
Address Adresse réseau du serveur exécutant une instance de SQL Server. Address est généralement le nom réseau du serveur, mais il peut s'agir d'autres noms, par exemple un canal, ou un port TCP/IP et une adresse de socket.
MARS

Contrôle la prise en charge MARS (Multiple Active Result Sets) dans une connexion :

  • Yes -- MARS est activé pour une connexion. C'est la valeur par défaut.
  • No -- MARS est désactivé.

MARS est une fonctionnalité prise en charge par SQL 2005 et ultérieur ou par SQL Azure. Sachez que l'activation de la fonctionnalité MARS peut entraîner une dégradation des performances.

Pour de plus amples informations sur MARS, voir : Using Multiple Active Result Sets (MARS) (EN)

No
Workstation ID de la station de travail. Généralement, il s'agit du nom réseau de l'ordinateur sur lequel réside l'application (facultatif). Si elle est spécifiée, cette valeur est stockée dans la colonne hostname de master.dbo.sysprocesses column et est retournée par sp_who et la fonction HOST_NAME de Transact-SQL. Bookkeeper1
Language Nom du langage SQL Server (facultatif). Lors de la connexion à un serveur SQL Server ayant plusieurs langages, Language spécifie le jeu de messages utilisé pour la connexion.
Encrypt

Contrôle le cryptage du trafic réseau :

  • Yes -- le trafic réseau est crypté.
  • No -- aucun cryptage n'est utilisé. C'est la valeur par défaut.
Yes
LoginTimeout Contrôle la durée, en secondes, s'écoulant avant qu'une application dépasse le temps imparti pour établir la connexion. 0 spécifie un délai d'attente infini (valeur par défaut). 30
VariantFormat

Contrôle la représentation du type de données SQL_VARIANT :

  • String -- les valeurs sont représentées en tant que dtWideString. Une valeur de chaîne est retournée en tant que chaîne hex, des nombres en tant que chaînes, etc. C'est la valeur par défaut.
  • Binary -- les valeurs sont représentées en tant que dtByteString avec présentation des données brutes. Une valeur de chaîne est retournée en tant que chaîne avec codage d'origine, les nombres sont retournés au format binaire, etc.
Binary
ExtendedMetadata

Contrôle la description étendue des ensembles de résultats d'une requête :

  • True -- FireDAC obtient la table et la colonne d'origine du champ en plus des autres attributs de colonne. Le fait de définir cette option sur True peut ralentir légèrement l'ouverture d'un ensemble de données.
  • False -- FireDAC utilise les informations restreintes relatives aux colonnes de requête. C'est la valeur par défaut.
True
ApplicationName Nom de l'application. Si elle est spécifiée, cette valeur est stockée dans la colonne program_name de master.dbo.sysprocesses column et est retournée par sp_who et la fonction APP_NAME de Transact-SQL. AllBooks
ODBCAdvanced Vous permet de spécifier la valeur des paramètres de connexion ODBC supplémentaires. MARS_Connection=no;Regional=yes
MetaDefCatalog Nom de la base de données par défaut. En mode conception, le code exclut le nom du catalogue du nom d'objet s'il est égal à MetaDefCatalog. Northwind
MetaDefSchema Nom du schéma par défaut. En mode conception, le code exclut le nom du schéma du nom d'objet s'il est égal à MetaDefSchema. dbo
MetaCaseIns

Contrôle le respect de la casse des métadonnées :

  • True -- recherche de métadonnées sans tenir compte de la casse.
  • False -- dépend du classement de base de données. C'est la valeur par défaut.
True
MetaCaseInsCat

Contrôle le respect de la casse des noms du catalogue SQL Server. Il peut prendre l'une des valeurs suivantes :

  • Choose -- laisse FireDAC détecter automatiquement le respect de la casse des noms du catalogue. C'est la valeur par défaut.
  • False -- les noms du catalogue sont sensibles à la casse.
  • True -- les noms de catalogue ne sont pas sensibles à la casse.
True

Cas d'utilisation

Utilisation d'une connexion sécurisée

Pour utiliser l'encryptage TLS/SSL, transmettez la paire clé-valeur TrustServerCertificate=yes dans la valeur du paramètre ODBCAdvanced :


ODBCAdvanced=TrustServerCertificate=yes

Autres cas d'utilisation

  • Etablir la connexion à l'instance SQL Server locale en utilisant l'authentification SQL Server :


DriverID=MSSQL
Server=127.0.0.1
Database=Northwind
User_Name=sa
MetaDefSchema=dbo
MetaDefCatalog=Northwind
  • Etablir la connexion à SQL Express 2005 en utilisant l'authentification Windows :


DriverID=MSSQL
Server=DA\SQLEXPRESS
Database=Northwind
OSAuthent=Yes
MARS=no
  • Etablir la connexion à SQL Azure. Notez la présence du suffixe "@<server>" dans User_Name et du préfixe "tcp:" dans les paramètres Server :


DriverID=MSSQL
Server=tcp:nasdfert6.database.windows.net
Database=Northwind
User_Name=addemo@nasdfert6
Password=asd123zxc
Encrypt=Yes
MetaDefSchema=dbo
MetaDefCatalog=Northwind
  • Etablir la connexion à une base de données locale :


DriverID=MSSQL
Server=(localdb)\\v11.0
Database=master
OSAuthent=Yes
  • Etablir une connexion à une base de données locale et attacher un fichier de base de données :


Server=(localdb)\\v11.0
DriverID=MSSQL
ODBCAdvanced=AttachDbFileName=C:\\Users\\Alex\\ADDemo.mdf

Voir aussi

Exemples