Difference between revisions of "mssqlconn/fr"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{mssqlconn}} {{Infobox databases/fr}} '''mssqlconn''' est un unité de fcl-db contenant le code du connecteur pour TMSSQLConnection (MS SQL Server) e...")
 
Line 10: Line 10:
  
 
==Installation==
 
==Installation==
The only thing you need is a FreeTDS dll/dylib/so for your platform.
+
La seule chose dont vous avez besoin est une bibliothèque dll/dylib/so FreeTDS pour votre plate-forme.
* On Linux, download the freetds package which provides '''libsybdb.so''' (e.g. in Debian this is provided by package '''libsybdb5''') and the related development package using your package manager. You might also need to add a symbolic link libsybdb.so to libsybdb.so.5
+
* Sur Linux, téléchargez le paquet freetds qui fournit '''libsybdb.so''' (p.ex. dans la Debian, cela est fourni par le paquet '''libsybdb5''') et le paquet de développement associé en utilisant votre gestionnaire de paquet. vous aurez aussi besoin d'ajouter un lien symbolique libsybdb.so vers libsybdb.so.5.
* On Windows, you can download a recent 32 or 64 bit version of the FreeTDS library '''dblib.dll''' here: [ftp://ftp.freepascal.org/fpc/contrib/windows/]
+
* Sur Windows, vous pouvez télécharger une version 32 ou 64 bits récente de la bibliothèque FreeTDS '''dblib.dll''' ici : [ftp://ftp.freepascal.org/fpc/contrib/windows/]
  
Advanced use: by modifying FPC file '''dblib.pas''' SQLDB could use the "native" library '''ntwdblib.dll''' instead of the default FreeTDS library '''dblib.dll''' (in this case FPC needs to be recompiled).
+
Utilisation avancée : en modifiant le fichier FPC '''dblib.pas''' SQLDB pourrait utiliser la bibliothèque "native" '''ntwdblib.dll''' au lieu de la bibliothèque FreeTDS par défaut '''dblib.dll''' (dans ce cas, FPC a besoin d'être recompilé).
  
 
==Documentation==
 
==Documentation==

Revision as of 08:42, 20 April 2017

English (en) español (es) français (fr) polski (pl)

Portail de la base de données

Références:

Tutoriels/articles pratiques :

Bases de données

Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos

mssqlconn est un unité de fcl-db contenant le code du connecteur pour TMSSQLConnection (MS SQL Server) et TSybaseConnection (Sybase ASE).

Lazarus utilise mssqlconn pour présenter un connecteur MS SQL et un connecteur Sybase ASE.

DBLib

mssqlconn utilise l'unité de bas-niveau dblib qui nécessite la bibliothèque FreeTDS (.dll/.dylib/.so) pour se connecter au serveur.

Installation

La seule chose dont vous avez besoin est une bibliothèque dll/dylib/so FreeTDS pour votre plate-forme.

  • Sur Linux, téléchargez le paquet freetds qui fournit libsybdb.so (p.ex. dans la Debian, cela est fourni par le paquet libsybdb5) et le paquet de développement associé en utilisant votre gestionnaire de paquet. vous aurez aussi besoin d'ajouter un lien symbolique libsybdb.so vers libsybdb.so.5.
  • Sur Windows, vous pouvez télécharger une version 32 ou 64 bits récente de la bibliothèque FreeTDS dblib.dll ici : [1]

Utilisation avancée : en modifiant le fichier FPC dblib.pas SQLDB pourrait utiliser la bibliothèque "native" ntwdblib.dll au lieu de la bibliothèque FreeTDS par défaut dblib.dll (dans ce cas, FPC a besoin d'être recompilé).

Documentation

Official documentation: FPC documentation on mssqlconn

Limitations et conseils

  • Sybase port: the default port for Sybase ASE is 5000. As FreeTDS/mssqlconn uses 1433 by default, you may want to add :5000 to the hostname proprerty automatically or after feedback from the end user.

As the documentation specifies:

  • you might need to tweak some parameters for BLOB support.
  • MS SQL multiple resultsets (MARS) are not supported.

Paramètres de sorties et procédures stockées

Also, TMSSQLConnection and TSybaseConnection do not support handling of return status and output parameters of stored procedures. For more informations see: http://www.freetds.org/faq.html#ms.output.parameters As a workaround you can use something like:

with SQLQuery1 do begin
  SQL.Text:='declare @param int; declare @ret int;'+
            'exec @ret=MyStoredProc 1, @param OUTPUT;'+
            'select @ret as return_status, @param as out_param';
  Open;
end;

Some more tips:

Messages d'erreur

Error 20009 : Unable to connect: Adaptive Server is unavailable or does not exist

  • Check if TCP/IP protocol is enabled on SQL Server side using "SQL Server Configuration Manager" - "SQL Server Network Configuration"
  • Check if TCP port 1433 is opened
  • If you connect to specific instance of SQL Server (this is also case of SQL Server Express), check if SQL Server Browser Service is running on server (service listens on UDP port 1434)

Erreur 20019 : Attempt to initiate a new Adaptive Server operation with results pending

Erreur 20047 : DBPROCESS is dead or not enabled

  • SQL Server periodically verifies (by default every 30 seconds) if idle TCP/IP connection is still intact by sending a keep alive packet to its peer. If the remote system is still reachable and functioning, a acknowledge packet is sent back. If not local TCP will reset connection.
  • Adjust SQL Server Configuration Manager -> SQL Server Network Configuration -> Protocols -> TCP/IP : "Keep Alive"

EINOutError/Can not load DB-Lib client library "dblib.dll". Check your installation

  • Make sure you have all required dlls installed (e.g. dblib.dll, libiconv2.dll)
  • Make sure you have all required C/C++ runtime libraries installed that dblib.dll depends on
  • Make sure the bitness (32 or 64 bit) of the dblib library and your compiled program match

Exemples

Création d'une base de données

The example below creates a database on an MS SQL Server. For this to work, the connection's parameter AutoCommit must be set to on. For normal subsequent connection you can switch it off again and use regular StartTransaction and Commit.

// Set up a form with a button called DBButton, 
// textbox called DatabaseNameEdit,
// '''MSSQLConnection''' called FConn
// ***make sure the Autocommit parameter is on for the create db part before connectiong:
//FConn.Params.Add('AutoCommit=true');
procedure TForm1.CreateDBButtonClick(Sender: TObject);
var
  CurrentDB: string;
begin
  if DatabaseNameEdit.Text='' then
  begin
    showmessage('Empty database name. Please specify database name first.');
    exit;
  end;

  CurrentDB:=FConn.DatabaseName;
  try
    // For FPC 2.6.1+
    FConn.ExecuteDirect('CREATE DATABASE '+DatabaseNameEdit.Text);
    {
    // This works with FPC 2.7.1, not on 2.6.1
    FConn.CreateDB;
    }
  except
    on E: Exception do
    begin
      showmessage('Exception running CreateDB: '+E.Message);
    end;
  end;
end;