isoftmssql-bundle

此包已被弃用且不再维护。未建议替代包。
关于此包的最新版本(dev-master)没有可用的许可信息。

MsSQL服务器工作驱动程序

dev-master 2015-05-18 21:16 UTC

This package is not auto-updated.

Last update: 2020-04-16 11:46:01 UTC


README

警告:此分支已被弃用 :(

安装

isoft/mssql-bundle 添加到 composer.json

"require": {
    ....
    "isoft/mssql-bundle": "master-dev"
},

使用方法

config.yml 的 doctrine - dbal 部分,添加到 driver_class 选项

doctrine:
    dbal:
        driver_class:   \Realestate\MssqlBundle\Driver\PDODblib\Driver
        host: %database_host%
        user: %database_user%
        password: %database_password%
        # options:
        #    ansi_nulls: on
        #    ansi_warnings: on

%database_driver% 不能设置,也不能设置 %charset% 参数,如 stackoverflow.com/questions/8492941/doctrine-2-how-to-add-custom-dbal-driver#answer-8731924 中所述

连接选项(ansi_nulls 和 ansi_warnings)可以配置为 MSSQL 的 ON|OFF

在 app/AppKernel.php 的 registerBundles() 方法中添加以下行

$bundles = array(
    ...
    new Realestate\MssqlBundle\RealestateMssqlBundle(),
    ...
);

此驱动程序需要版本 8.0(来自 http://www.ubuntitis.com/?p=64),因为默认的 4.2 版本没有 UTF 支持

freetds.conf (/etc/freetds/freetds.conf) 的一个示例

[mssql_server]
    host = xxx.xxx.xxx.xxx
    port = 1433
    tds version = 8.0
    client charset = UTF-8
    text size = 20971520

不能使用 nvarchar!!

在 SQL 2000 SP4 或更高版本、SQL 2005 或 SQL 2008 中,如果你执行返回 NTEXT 类型数据的查询,可能会遇到以下异常:_mssql.MssqlDatabaseError: SQL Server 信息 4004,严重性 16,状态 1,行 1:在只使用 Unicode 的校对或 ntext 数据中不能发送 Unicode 数据到使用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本的客户端。

这意味着由于 FTREETDS 的不足,SQL Server 无法将 Unicode 数据发送到 FTREETDS。你必须将数据 CAST 或 CONVERT 到等效的 NVARCHAR 数据类型,该类型不表现此行为。