# Microsoft SQL Server 関数 (PDO_SQLSRV)

## はじめに

PDO_SQLSRV は、PHP Data Objects (PDO) インターフェイス を実装したドライバです。 PHP から、MS SQL Server (SQL Server 2005 以降) および SQL Azure データベースにアクセスできるようになります。

## インストール手順

PDO_SQLSRV 拡張モジュールを有効にするには、適切な DLL ファイルを PHP の拡張モジュール用ディレクトリに配置して、php.ini ファイルにエントリを追加します。 PDO_SQLSRV をダウンロードすると、その中には 8 個のドライバファイルが入っています。 その中の 4 個のファイルが PDO サポート用のファイルです。非スレッドセーフな PHP (PHP 5.3) を実行している場合は php_pdo_sqlsrv_53_nts.dll を使います (ウェブサーバーとして IIS を使っている場合は、非スレッドセーフバージョンを使う必要があります)。 スレッドセーフな PHP を実行している場合は php_pdo_sqlsrv_53_ts.dll を使います。 同様に、PHP 5.4 の場合についても、非スレッドセーフなのかスレッドセーフなのかによって php_pdo_sqlsrv_54_nts.dll あるいは php_pdo_sqlsrv_54_ts.dll のいずれかを使います。

最新版のドライバのダウンロードは » SQLSRV 3.0 download のページでできます。PHP 5.2 を使っている場合や VC6 でコンパイルしたバージョンが必要な場合は、 バージョン 2.0 系を » SQLSRV 2.0 download からダウンロードして使いましょう。

システム要件に関する詳細は » SQLSRV System Requirements を参照ください。

PDO_SQLSRV 拡張モジュールは Windows 版の PHP でしか使えません。 Linux の場合は ODBC および » Microsoft's SQL Server ODBC Driver for Linux を参照ください。

## 定義済み定数

このドライバでは以下の定数が定義されて います。これは拡張モジュールが PHP に組み込まれているか、実行時に動的にロード されている場合のみ使用可能です。さらに、これらのドライバ固有の定数は そのドライバを使用している場合にのみ使用されます。 あるドライバ固有の属性を別のドライバで使うと、予期せぬ結果を引き起こします。 もし複数のドライバを使用しているコードを実行している場合、 PDO::getAttribute() で `PDO::ATTR_DRIVER_NAME` 属性を使用することで、使用中のドライバ名を調べることが可能です。

`PDO::SQLSRV_TXN_READ_UNCOMMITTED` (integer)
  この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Read Uncommitted に設定します。
`PDO::SQLSRV_TXN_READ_COMMITTED` (integer)
  この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Read Committed に設定します。
`PDO::SQLSRV_TXN_REPEATABLE_READ` (integer)
  この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Repeateable Read に設定します。
`PDO::SQLSRV_TXN_SNAPSHOT` (integer)
  この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Snapshot に設定します。
`PDO::SQLSRV_TXN_SERIALIZABLE` (integer)
  この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Serializable に設定します。
`PDO::SQLSRV_ENCODING_BINARY` (integer)
  サーバーとの間のデータの送受信を生のバイトストリームで行い、 符号化や変換を一切しないように指示します。 この定数は、 PDOStatement::setAttribute、PDO::prepare、PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
`PDO::SQLSRV_ENCODING_SYSTEM` (integer)
  サーバーとの間のデータの送受信を 8 ビット文字として行い、 システムに設定された Windows のロケールのコードページを利用します。 このコードページにマップできない文字はすべて、シングルバイトのクエスチョンマークに置き換えられます。 この定数は、PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、 PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
`PDO::SQLSRV_ENCODING_UTF8` (integer)
  サーバーとの間のデータの送受信を UTF-8 エンコーディングで行います。 これが、デフォルトの符号化方式です。この定数は、 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、 PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
`PDO::SQLSRV_ENCODING_DEFAULT` (integer)
  サーバーとの間のデータの送受信を、接続時に指定した PDO::SQLSRV_ENCODING_SYSTEM に従って行います。プリペアドステートメントの中で指定された場合は、 その接続で設定されているエンコーディングを利用します。この定数は、 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、 PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
`PDO::SQLSRV_ATTR_QUERY_TIMEOUT` (integer)
  非負の整数で、タイムアウト秒数を指定します。ゼロがデフォルトで、これはタイムアウトしないことを意味します。 この定数は、PDOStatement::setAttribute、PDO::setAttribute および PDO::prepare に渡せます。
`PDO::SQLSRV_ATTR_DIRECT_QUERY` (integer)
  クエリを直接実行し、準備しないことを指示します。 この定数は、PDO::setAttribute および PDO::prepare に渡せます。詳細な情報は » Direct and Prepared Statement Execution を参照ください。

## 目次

- PDO_SQLSRV DSN — MS SQL Server および SQL Azure データベースに接続する