Microsoft SQL Server への接続(FireDAC)
データベース接続(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 を使用するには、以下が必要です。
- UnixODBC(libodbc.dylib)x86 ODBC ドライバ マネージャ ライブラリ。
- FreeTDS(libtdsodbc.dylib) x86 ODBC ドライバ。
FreeTDS は、CVS からホーム ディレクトリ内のフォルダに転送することができます(詳細 1)(詳細 2 )。 FreeTDS を macOS にインストールするには、以下のコマンドを使用します。
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 ..
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 にインストールするには:
-
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
- 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:" を付ける必要があります。
|
|
Port | macOS の場合のみ: SQL Server がリスンしているポートを指定します。
Windows プラットフォームの場合、ポートは Server パラメータの値の後にコンマで区切って指定することができます。たとえば、「Server=host, port」のように指定します。デフォルト ポートは 1433 です。 |
|
Database | この接続のデフォルト データベースの名前。Database を指定しなければ、ログインに定義されたデフォルト データベースが使われます。 | Northwind |
OSAuthent |
認証モードを以下のように制御します。
|
No |
User_Name | SQL Server のログイン名(OSAuthent=No の場合)。
SQL Azure に接続する場合は、ユーザー名の後に "@<サーバー名>" を付ける必要があります。 |
|
Password | SQL Server のログイン パスワード(OSAuthent=No の場合)。
'{' と '}' を含むパスワードはサポートされていません。 |
|
Network | ネットワーク ライブラリ ダイナミックリンク ライブラリの名前。この名前にパスを含める必要はありません。また、ファイル名の拡張子 .dll を含めてはなりません。 | dbnmpntw |
Address | SQL Server のインスタンスが動作しているサーバーのネットワーク アドレス。通常、Address にはサーバーのネットワーク名を指定しますが、パイプや、TCP/IP ポートとソケット アドレスなど、他の名前でもかまいません。 | |
MARS |
接続で 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 |
LoginTimeout | 接続の確立中にアプリケーションがタイムアウトするまでの時間(秒単位)を制御します。0 は無限に待つことを示します(デフォルト値)。 | 30 |
VariantFormat |
SQL_VARIANT データ型の表現形式を制御します。
|
Binary |
ExtendedMetadata |
クエリ結果セットの拡張記述を以下のように制御します。
|
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 |
MetaCaseInsCat |
SQL Server カタログ名で大文字/小文字を区別するかどうかを制御します。このパラメータは、次の値のいずれかを取ります。
|
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
関連項目
サンプル
- FireDAC MS SQL サンプル