silverstripe / mssql
为SilverStripe添加MSSQL支持
Requires
Requires (Dev)
- phpunit/phpunit: ^5.7
Suggests
- ext-pdo_sqlsrv: Required to support MSSQLPDODatabase as the server type
- ext-sqlsrv: Required to support MSSQLDatabase as the server type
README
允许SilverStripe使用SQL Server数据库。
维护者联系方式
-
Sean Harvey(昵称:halkyon) <sean (at) silverstripe (dot) com>
-
Damian Mooyman (@tractorcow)
要求
- SilverStripe 4+
- SQL Server 2008、2008 R2或2012。
mssql
PHP API从2.0版本开始不再受支持
*nix
Linux支持仅通过PDO扩展提供。这需要
Windows
在Windows上,您可以通过PDO或sqlsrv
连接。这两种选项都需要SQL Server Driver for PHP。 "sqlsrv" 3.0+
注意:您还可以使用SQL Server Express,这是Microsoft免费提供的。然而,它有一些限制,例如最大数据库存储为10GB。
安装
以下步骤将使用Composer安装最新的SilverStripe稳定版本以及此模块
- 安装SilverStripe:
composer create-project silverstripe/installer /my/website/folder
- 安装模块:
cd /my/website/folder && composer require silverstripe/mssql ^2
- 通过浏览到install.php打开SilverStripe安装程序,例如 http://localhost/silverstripe/install.php
- 在数据库列表中选择SQL Server 2008+并输入您的SQL Server数据库详细信息
故障排除
问题:SQL Server位于远程主机(另一台机器)上,我无法从我的机器连接到它。
答案:请确保您已通过SQL Server Configuration Manager启用了TCP访问并打开防火墙端口。
问题:我刚刚安装了SQL Server,但它说无法连接
答案:有时SQL Server将以非默认实例名称安装,例如“SQLExpress”而不是默认的“MSSQLSERVER”。如果是这种情况,您需要在设置PHP数据库配置中的服务器时声明实例名称。例如:(local)\SQLExpress。斜线前面的第一部分表示服务器主机,或IP地址。在这种情况下,(local)表示localhost,即PHP运行的服务器。第二部分是连接到的SQL Server实例名称。
问题:我在连接到SQL Server数据库时遇到Unicode SQL Server错误(例如,在仅Unicode排序规则中包含Unicode数据或在DB-Library(如ISQL)或ODBC版本3.7或更早版本中不能将ntext数据发送到客户端)
答案:如果您使用FreeTDS,请确保在freetds.conf中使用TDS版本8.0。如果在Windows上,请确保您使用SQL Server Driver for PHP而不是PHP提供的mssql驱动程序。
问题:使用FreeTDS我无法连接到我的SQL Server数据库。PHP中的错误说服务器不存在
答案:确保您在/etc/freetds/freetds.conf中有一个指向您的服务器的条目。例如
[myserver]
host = myserver.mydomain.com
port = 1433
tds version = 8.0
然后您可以在连接数据库时使用 "myserver"(上方方括号内的部分)作为服务器名称。请注意,如果您正在运行Macports,该文件位于 /opt/local/etc/freetds/freetds.conf。
另外,如果您不想继续在freetds.conf中添加更多条目以指定更多SQL Server位置,您可以使用完整的主机/IP和端口号组合,例如 "myserver:1433"(1433是默认的SQL Server端口),并确保在freetds.conf文件中全局设置 "tds version = 8.0"。
注意:编辑freetds.conf时请使用 制表符 而不是空格,否则它将无法加载您指定的配置!
注意:某些Linux发行版使用 SELinux,这可能会阻止对您的SQL Server数据库的访问。可能需要添加规则以允许此流量通过。