Herstellen einer Verbindung zu Microsoft SQL Server (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenbankkonnektivität (FireDAC)

In diesem Thema wird beschrieben, wie eine Verbindung zu Microsoft SQL Server hergestellt wird.

Unterstützte Versionen

Der native FireDAC-Treiber unterstützt die Editionen Microsoft SQL Server Standard und Express Version 2000 und höher sowie Microsoft SQL Azure. Eine Beschreibung über das Herstellen einer Verbindung zu Microsoft SQL Server Compact Edition finden Sie unter Herstellen einer Verbindung zu Microsoft SQL Server Compact Edition.

Client-Software

Windows-Client-Software

Für FireDAC muss einer der x86- oder x64-ODBC-Treiber von Microsoft SQL Server auf dem Arbeitsplatz-Computer installiert sein:

  • SQL Server-ODBC-Treiber als Verbindung für SQL Server 2000. Höchstwahrscheinlich ist der ODBC-Treiber bereits auf Ihrem Arbeitsplatz-Computer installiert. Falls nicht finden Sie hier Details.
  • SQL Native Client als Verbindung für SQL Server 2000 und 2005. Es wird dringend empfohlen, den SQL Native Client zu installieren, wenn Ihre Anwendung mit SQL Server 2005 arbeiten muss. Siehe Microsoft SQL Server Native Client.
  • SQL Server Native Client NN.N als Verbindung für SQL Server 2000, 2005, 2008, 2012 und SQL Azure. Es wird dringend empfohlen, den SQL Server Native Client NN.N zu installieren, wenn Ihre Anwendung mit SQL Server 2008, 2012 oder SQL Azure arbeiten muss. Siehe Microsoft SQL Server 2008 Native Client.
  • SQL Server Native Client 11.0 als Verbindung für LocalDB.
  • ODBC Driver 13-18 als Verbindung für SQL Server 2008, 2008 R2, 2012, 2014, 2016, 2017 und 2019 sowie SQL Azure. Wir empfehlen die Verwendung von ODBC Driver 18.
Hinweis: SQL Server Native Client 10.0 (SQL Server 2008) kann möglicherweise keine Stored Procedure aufrufen, wenn er mit SQL Server 2000 verbunden ist. Symptom für dieses Problem ist die Fehlermeldung "Falsche Syntax in der Nähe von {". Verwenden Sie in diesem Fall den ODBC-Treiber aus SQL Server 2000 oder 2005.

Wenn der SQL Server-ODBC-Treiber nicht ordnungsgemäß installiert wurde, wird beim Verbindungsversuch eine Exception ausgelöst:


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

macOS-Client-Software

FireDAC benötigt:

  • Die x86-ODBC-Treiberverwaltungsbibliothek UnixODBC (libodbc.dylib).
  • Den FreeTDS-x86-ODBC-Treiber (libtdsodbc.dylib).

FreeTDS kann aus CVS in einen Ordner Ihres Stammverzeichnisses übertragen werden (siehe 1) (siehe 2). Verwenden Sie die folgenden Befehle, um FreeTDS auf macOS zu installieren:


cvs -z3 -d:pserver:[email protected]:/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 ..

Sie müssen eventuell auch das Hilfsprogramm gawk installieren. Nun können Sie einen ODBC-DSN konfigurieren oder die FireDAC-Verbindung testen.

Der FreeTDS-ODBC-Treiber ist nicht so effizient und stabil wie der originale Microsoft ODBC-Treiber.

Linux-Client-Software

FireDAC benötigt die unixODBC 64-Bit ODBC-Treiberverwaltungsbibliothek und den Microsoft ODBC-Treiber 11 für SQL-Server unter Linux.

Um den Microsoft ODBC-Treiber 11 für SQL-Server unter Linux zu installieren:

  1. Auf Ubuntu Server 16.04 LTS, führen Sie die folgenden Befehle aus:
    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. Auf Red Hat Enterprise Linux 7, laden Sie das entsprechende Installationsprogramm herunter (EN) und befolgen Sie die offizielle Installationsanweisungen.

Treibereinbindung

So binden Sie den Treiber ein:

Verbindungsdefinitionsparameter

Für eine Verbindung mit dem Microsoft SQL Server-DBMS ist für die meisten Anwendungen die Angabe der Parameter "DriverID", "Server", "Database", "OSAuthent", "User_Name" und "Password" erforderlich (Einzelheiten finden Sie unter Definieren von Verbindungen (FireDAC)).

DriverID=MSSQL

Parameter Beschreibung Beispielwert
Server Name eines Servers im Netzwerk, auf dem SQL Server ausgeführt wird. Der Wert muss entweder der Name eines Servers im Netzwerk oder der Name eines erweiterten Servereintrags für die SQL Server-Clientkonfiguration sein.

Wenn Sie eine Verbindung zu SQL Azure herstellen, müssen Sie dem Servernamen das Präfix "tcp:" voranstellen.

Hinweis: Der alternative TPC/IP-Port kann nach einem Servernamen, getrennt durch Komma, angegeben werden.
Hinweis: Um eine Verbindung zu einer benannten Instanz unter Linux herzustellen, muss der TPC/IP-Port nach dem Servernamen durch Komma getrennt angegeben werden. Geben Sie nicht den Instanznamen an.
  • 127.0.0.1\SQLEXPRESS
  • SrvHost, 4000
  • tcp:nasdfert6.database.windows.net
Port Nur für macOS. Legt den Port fest, über den SQL Server empfängt.

Für die Windows-Plattform kann der Port nach einem Komma im "Server"-Parameterwert angegeben werden. Zum Beispiel: Server=host, port. Der Standard-Port ist 1433.

Database Name der Standarddatenbank für die Verbindung. Wenn "Database" nicht angegeben ist, wird die bei der Anmeldung angegebene Standarddatenbank verwendet. Northwind
OSAuthent

Steuert den Authentifizierungsmodus:

  • Yes – Windows-Authentifizierung verwenden.
  • No – DBMS-Authentifizierung verwenden. Das ist der Vorgabewert.
No
User_Name Der Anmeldename für SQL Server, wenn "OSAuthent=No" ist.

Bei einer Verbindung zu SQL Azure müssen Sie das Suffix "@<Server>" an Ihren Benutzernamen anhängen.

  • sa
  • addemo@nasdfert6
Password Das Anmeldepasswort für SQL Server, wenn "OSAuthent=No" ist.

Passwörter, die "{" oder "}" enthalten, werden nicht unterstützt.

Network Name einer Netzwerk-DLL. Der Name muss den Pfad und die Dateinamenserweiterung .dll nicht enthalten. dbnmpntw
Address Netzwerkadresse des Servers, auf dem eine Instanz von SQL Server ausgeführt wird. Address ist normalerweise der Netzwerkname des Servers, kann aber auch ein anderer Name, wie eine Pipe, oder ein TCP/IP-Port und eine Socket-Adresse, sein.
MARS

Steuert die MARS-Unterstützung (Multiple Active Result Sets) in einer Verbindung:

  • Yes – MARS ist für eine Verbindung aktiviert. Das ist der Vorgabewert.
  • No – MARS ist deaktiviert.

MARS ist ein von SQL 2005 und höheren Versionen oder von SQL Azure unterstütztes Feature. Die Aktivierung von MARS kann zu Leistungseinbußen führen. Weitere Informationen über MARS finden Sie unter: Verwenden von Multiple Active Result Sets (MARS)

No
Workstation ID des Arbeitsplatz-Computers. In der Regel ist das der Netzwerkname des Computers, auf dem sich die Anwendung befindet (optional). Wenn angegeben, wird dieser Wert in der Spalte "hostname" von master.dbo.sysprocesses gespeichert und wird von sp_who und der Transact-SQL-Funktion HOST_NAME zurückgegeben. Bookkeeper1
Language Name der SQL Server-Sprache (optional). Bei der Verbindung zu einem SQL-Server mit mehreren Sprachen gibt Language an, welcher Meldungssatz für die Verbindung verwendet wird.
Encrypt

Steuert die Verschlüsselung des Netzwerkverkehrs:

  • Yes – der Netzwerkverkehr ist verschlüsselt.
  • No – es wird keine Verschlüsselung verwendet. Das ist der Vorgabewert.
Yes
LoginTimeout Steuert die Dauer in Sekunden bis zur Zeitüberschreitung einer Anwendung beim Versuch, eine Verbindung herzustellen. 0 gibt eine unendliche Wartezeit an (Vorgabewert). 30
VariantFormat

Steuert die Darstellung des Datentyps SQL_VARIANT:

  • String – Werte werden als dtWideString dargestellt. Ein String-Wert wird als hexadezimaler String, Zahlen werden als Strings usw. zurückgegeben. Das ist der Vorgabewert.
  • Binary – Werte werden als dtByteString in Rohdatendarstellung dargestellt. Ein String-Wert wird als String in der Originalcodierung, Zahlen werden im Binärformat usw. zurückgegeben.
Binary
StringFormat
  • Choose – FireDAC ermittelt automatisch die Schreibweise von Katalognamen. – ANSI oder Unicode. Dies ist der Vorgabewert.
  • ANSI – Zeichendaten werden als dtWideString dargestellt.
Choose
ExtendedMetadata

Steuert die erweiterte Beschreibung von Abfrage-Ergebnismengen:

  • True – FireDAC erhält eine Feldursprungstabelle und -spalte zusätzlich zu den anderen Spaltenattributen. Durch Setzen dieser Option auf True wird das Öffnen von Datenmengen geringfügig verlangsamt.
  • False – FireDAC verwendet die beschränkten Informationen über die Abfragespalten. Das ist der Vorgabewert.
True
ApplicationName Name der Anwendung. Wenn angegeben, wird dieser Wert in der Spalte "program_name" von master.dbo.sysprocesses gespeichert und wird von sp_who und der Transact-SQL-Funktion APP_NAME zurückgegeben. AllBooks
ODBCAdvanced Ermöglicht die Angabe eines beliebigen weiteren ODBC-Verbindungsparameterwertes. MARS_Connection=no;Regional=yes
MetaDefCatalog Standarddatenbankname. Im Entwurfszeitcode wird der Katalogname im Objektnamen weggelassen, wenn er MetaDefCatalog entspricht. Northwind
MetaDefSchema Standardschemaname. Im Entwurfszeitcode wird der Schemaname im Objektnamen weggelassen, wenn er MetaDefSchema entspricht. dbo
MetaCaseIns

Steuert die Groß-/Kleinschreibung von Metadaten:

  • True – die Suche mit Berücksichtigung der Groß-/Kleinschreibung wird verwendet.
  • False – abhängig von der Datenbanksortierung. Das ist der Vorgabewert.
True
MetaCaseInsCat

Steuert die Groß-/Kleinschreibung von SQL Server-Katalognamen. Folgende Werte sind möglich:

  • Choose -- FireDAC ermittelt automatisch die Schreibweise von Katalognamen. Das ist der Vorgabewert.
  • False – In Katalognamen wird die Groß-/Kleinschreibung berücksichtigt.
  • True – In Katalognamen wird die Groß-/Kleinschreibung nicht berücksichtigt.
True

Anwendungsfälle

Verwenden einer sicheren Verbindung

Übergeben Sie für die Verwendung der TLS/SSL-Verschlüsselung das Schlüssel/Wertepaar TrustServerCertificate=yes für den Wert des Parameters ODBCAdvanced:


ODBCAdvanced=TrustServerCertificate=yes

Weitere Anwendungsfälle

  • Herstellen einer Verbindung zur lokalen SQL Server-Instanz mittels SQL Server-Authentifizierung:


DriverID=MSSQL
Server=127.0.0.1
Database=Northwind
User_Name=sa
MetaDefSchema=dbo
MetaDefCatalog=Northwind
  • Herstellen einer Verbindung zu SQL Express 2005 mittels Windows-Authentifizierung:


DriverID=MSSQL
Server=DA\SQLEXPRESS
Database=Northwind
OSAuthent=Yes
MARS=no
  • Herstellen einer Verbindung zu SQL Azure. Beachten Sie das Suffix "@<Server>" im Parameter "User_Name" und das Präfix "tcp:" im Parameter "Server":


DriverID=MSSQL
Server=tcp:nasdfert6.database.windows.net
Database=Northwind
User_Name=addemo@nasdfert6
Password=asd123zxc
Encrypt=Yes
MetaDefSchema=dbo
MetaDefCatalog=Northwind
  • Herstellen einer Verbindung zu LocalDB:


DriverID=MSSQL
Server=(localdb)\\v11.0
Database=master
OSAuthent=Yes
  • Herstellen einer Verbindung zu LocalDB und Zuordnen einer Datenbankdatei:


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

Siehe auch

Beispiele