Microsoft SQL Server への接続(FireDAC)

提供: RAD Studio
移動先: 案内検索

データベース接続(FireDAC) への移動

このトピックでは、Microsoft SQL Server への接続方法を説明します。

サポート対象バージョン

FireDAC ネイティブ ドライバでは、Microsoft SQL Server Standard エディションおよび Express エディションのバージョン 2000 以降および Microsoft SQL Azure をサポートしています。Microsoft SQL Server Compact Edition への接続方法については、「Microsoft SQL Server Compact Edition への接続」を参照してください。

クライアント ソフトウェア

Windows 版クライアント ソフトウェア

FireDAC を使用するには、以下の Microsoft SQL Server x86 または x64 ODBC ドライバのいずれかをワークステーションにインストールする必要があります。

  • SQL Server ODBC ドライバ。SQL Server 2000 に接続するためのもの。ほとんどの場合、この ODBC ドライバはワークステーションに既にインストールされています。インストールされていない場合には、詳細情報を参照してください。
  • SQL Native Client。SQL Server 2000 および 2005 に接続するためのもの。アプリケーションで SQL Server 2005 を扱う必要がある場合には、SQL Native Client をインストールすることを強くお勧めします。Microsoft SQL Server Native Client を参照してください。
  • SQL Server Native Client NN.N。SQL Server 2000、2005、2008、2012、および SQL Azure に接続するためのもの。アプリケーションで SQL Server 2008、2012、または SQL Azure を扱う必要がある場合には、SQL Server Native Client NN.N をインストールすることを強くお勧めします。Microsoft SQL Server 2008 Native Client を参照してください。
  • SQL Server Native Client 11.0。LocalDB に接続するためのもの。
  • ODBC Driver 13。SQL Server 2008、2008 R2、2012、2014、2016、SQL Azure に接続するためのもの。

メモ: SQL Server Native Client 10.0(SQL Server 2008)を SQL Server 2000 に接続すると、ストアド プロシージャの呼び出しが失敗する可能性があります。この問題では、"Incorrect Syntax near to {"({ の近くに不正な構文があります)というエラー メッセージが症状として発生します。その場合には、配布された SQL Server 2000 または 2005 に含まれている ODBC ドライバを使用してください。

SQL Server ODBC ドライバが正しくインストールされていない場合には、接続を試みたときに次の例外が発生します。


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

macOS クライアント ソフトウェア

FireDAC を使用するには、以下が必要です。

  • UnixODBClibodbc.dylib)x86 ODBC ドライバ マネージャ ライブラリ。
  • FreeTDS(libtdsodbc.dylib) x86 ODBC ドライバ。

FreeTDS は、CVS からホーム ディレクトリ内のフォルダに転送することができます(詳細 1)(詳細 2 )。 FreeTDS を macOS にインストールするには、以下のコマンドを使用します。


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 ..

gawk ユーティリティもインストールする必要があることに注意してください。この段階で、ODBC DSN を構成したり FireDAC 接続をテストすることができます。

FreeTDS ODBC ドライバは、元の Microsoft ODBC ドライバほど効率的でもなければ安定してもいないことに注意してください。

Linux 版クライアント ソフトウェア

FireDAC は、unixODBC 64 ビット ODBC ドライバ マネージャ ライブラリと、Linux では Microsoft ODBC Driver 11 for SQL Server が必要です。

Microsoft ODBC Driver 11 for SQL Server を Linux にインストールするには:

  1. Ubuntu Server 16.04 LTS では、次のコマンドを実行します:
    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. Red Hat Enterprise Linux 7 にて、該当するインストーラをダウンロードし、正式なインストール手順に従ってください

ドライバのリンク

ドライバをリンクするには、以下のいずれかを行います。

  • [ツール パレット]の[FireDAC Links]ページから、TFDPhysMSSQLDriverLink コンポーネントをドロップします。
  • uses 句に FireDAC.Phys.MSSQL ユニットを追加します。

接続定義パラメータ

Microsoft SQL Server DBMS に接続するには、ほとんどのアプリケーションの場合、DriverID、Server、Database、OSAuthent、User_Name、Password の各パラメータを指定する必要があります(詳細は、「接続の定義(FireDAC)」を参照)。


DriverID=MSSQL

パラメータ 説明 値の例
Server SQL Server が動作しているネットワーク上のサーバーの名前。この値は、ネットワーク上でのサーバーの名前か、SQL Server Client Network Utility の advanced サーバー エントリの名前でなければなりません。

SQL Azure に接続する場合は、サーバー名の前に "tcp:" を付ける必要があります。

メモ: サーバー名の後にコンマで区切って代替 TPC/IP ポートを指定することができます。

メモ: Linux 上の名前付きのインスタンスに接続するには、サーバー名の後に、カンマで区切って、TPC/IP ポートが指定されていなければなりません。 インスタンス名を指定してはいけません。

  • 127.0.0.1\SQLEXPRESS
  • SrvHost, 4000
  • tcp:nasdfert6.database.windows.net
Port macOS の場合のみ: SQL Server がリスンしているポートを指定します。

Windows プラットフォームの場合、ポートは Server パラメータの値の後にコンマで区切って指定することができます。たとえば、「Server=host, port」のように指定します。デフォルト ポートは 1433 です。

Database この接続のデフォルト データベースの名前。Database を指定しなければ、ログインに定義されたデフォルト データベースが使われます。 Northwind
OSAuthent

認証モードを以下のように制御します。

  • Yes -- Windows の認証を使用します。
  • No -- DBMS の認証を使用します。これがデフォルト値です。
No
User_Name SQL Server のログイン名(OSAuthent=No の場合)。

SQL Azure に接続する場合は、ユーザー名の後に "@<サーバー名>" を付ける必要があります。

  • sa
  • addemo@nasdfert6
Password SQL Server のログイン パスワード(OSAuthent=No の場合)。

'{' と '}' を含むパスワードはサポートされていません。

Network ネットワーク ライブラリ ダイナミックリンク ライブラリの名前。この名前にパスを含める必要はありません。また、ファイル名の拡張子 .dll を含めてはなりません。 dbnmpntw
Address SQL Server のインスタンスが動作しているサーバーのネットワーク アドレス。通常、Address にはサーバーのネットワーク名を指定しますが、パイプや、TCP/IP ポートとソケット アドレスなど、他の名前でもかまいません。
MARS

接続で MARS(複数のアクティブな結果セット)をサポートするかどうかを制御します。

  • Yes -- 接続で MARS を有効にします。これがデフォルト値です。
  • No -- MARS を無効にします。

MARS は SQL 2005 以降、または SQL Azure でサポートされている機能です。 MARS 機能を有効にすると、パフォーマンス劣化が起こる場合がある点に注意してください。

MARS の詳細については、「Using Multiple Active Result Sets (MARS)」を参照してください。

No
Workstation ワークステーションの ID。通常、これは、アプリケーションが置かれているコンピュータのネットワーク名です(省略可能)。指定した場合、この値は master.dbo.sysprocesses の hostname の列に格納され、sp_who および Transact-SQL の HOST_NAME 関数で返されます。 Bookkeeper1
Language SQL Server の言語名(省略可能)。複数の言語が使われている SQL Server に接続するときに、この接続ではどのメッセージ セットを使用するかを Language で指定します。
Encrypt

ネットワーク トラフィックの暗号化を制御します。

  • Yes -- ネットワーク トラフィックは暗号化されます。
  • No -- 暗号化は行われません。これがデフォルト値です。
Yes
LoginTimeout 接続の確立中にアプリケーションがタイムアウトするまでの時間(秒単位)を制御します。0 は無限に待つことを示します(デフォルト値)。 30
VariantFormat

SQL_VARIANT データ型の表現形式を制御します。

  • String -- 値は dtWideString として表されます。たとえば、文字列値は 16 進文字列として、数値は文字列として返されます。これがデフォルト値です。
  • Binary -- 値は未加工のデータ表現を含む dtByteString として表されます。たとえば、文字列値は元のエンコーディングの文字列として、数値はバイナリ形式で返されます。
Binary
ExtendedMetadata

クエリ結果セットの拡張記述を以下のように制御します。

  • True -- FireDAC によって、他の列属性に加えてフィールドの元のテーブルおよび列が取得されます。このオプションを True に設定すると、データセットを開く処理の速度が低下する可能性があります。
  • False -- FireDAC では、クエリ列に関する限られた情報のみ使用します。これがデフォルト値です。
True
ApplicationName アプリケーションの名前。指定した場合、この値は master.dbo.sysprocesses の program_name の列に格納され、sp_who および Transact-SQL の APP_NAME 関数で返されます。 AllBooks
ODBCAdvanced その他の任意の ODBC 接続パラメータ値を追加で指定することができます。 MARS_Connection=no;Regional=yes
MetaDefCatalog デフォルト データベース名。カタログ名が MetaDefCatalog と同じ場合、設計時コードではオブジェクト名からカタログ名が省略されます。 Northwind
MetaDefSchema デフォルト スキーマ名。スキーマ名が MetaDefSchema と同じ場合、設計時コードでは、オブジェクト名からそのスキーマ名が省略されます。 dbo
MetaCaseIns

メタデータで大文字/小文字を区別するかどうかを制御します。

  • True -- 大文字/小文字を区別せずにメタデータの検索が行われます。
  • False -- データベースの照合方法と同じになります。これがデフォルト値です。
True
MetaCaseInsCat

SQL Server カタログ名で大文字/小文字を区別するかどうかを制御します。このパラメータは、次の値のいずれかを取ります。

  • Choose -- FireDAC は自動的に、カタログ名の大文字小文字の区別を検知することができます。 これがデフォルト値です。
  • False -- カタログ名で大文字/小文字を区別します。
  • True -- カタログ名で大文字/小文字を区別しません。
True

使用例

セキュアな接続の使用

TLS/SSL 暗号化を使用するには、TrustServerCertificate=yes というキーと値のペアを、ODBCAdvanced パラメータの値として渡します。


ODBCAdvanced=TrustServerCertificate=yes

その他の使用例

  • SQL Server 認証を使用してローカルの SQL Server インスタンスに接続する場合:


DriverID=MSSQL
Server=127.0.0.1
Database=Northwind
User_Name=sa
MetaDefSchema=dbo
MetaDefCatalog=Northwind
  • Windows 認証を使用して SQL Express 2005 に接続する場合:


DriverID=MSSQL
Server=DA\SQLEXPRESS
Database=Northwind
OSAuthent=Yes
MARS=no
  • SQL Azure に接続する場合(User_Name パラメータの後の "@<サーバー名>" と Server パラメータの前の "tcp:" に注目してください):


DriverID=MSSQL
Server=tcp:nasdfert6.database.windows.net
Database=Northwind
User_Name=addemo@nasdfert6
Password=asd123zxc
Encrypt=Yes
MetaDefSchema=dbo
MetaDefCatalog=Northwind
  • LocalDB に接続する場合:


DriverID=MSSQL
Server=(localdb)\\v11.0
Database=master
OSAuthent=Yes
  • LocalDB に接続してデータベース ファイルを添付する場合:


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

関連項目

サンプル