标签: freetds

连接到Mac上的SQL Server的FreeTDS问题(来自服务器的意外EOF)

我已经设置FreeTDS连接到SQL Server数据库.当我尝试在Mac(Lion)上的终端中打开TSQL时出现此错误:

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20017 (severity 9):
    Unexpected EOF from the server
    OS error 36, "Operation now in progress"
Error 20002 (severity 9):
    Adaptive Server connection failed
There was a problem connecting to the server
Run Code Online (Sandbox Code Playgroud)

有没有人知道可能导致这种情况的原因?

sql-server freetds ruby-on-rails-3

8
推荐指数
3
解决办法
1万
查看次数

odbc无法连接到OS X Lion上的MSSQL数据源

odbc isql无法连接到数据源:

 $ isql SMS_GTWY username password -v
Run Code Online (Sandbox Code Playgroud)

收益:

 [S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
 [01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name.
 [ISQL]ERROR: Could not SQLConnect
Run Code Online (Sandbox Code Playgroud)

虽然没问题tsql:

 $ tsql -S SERVER001 -U username -P password
Run Code Online (Sandbox Code Playgroud)

收益:

 locale is "C/UTF-8/C/C/C/C"
 locale charset is "UTF-8"
 using default charset "UTF8"
 1> 
Run Code Online (Sandbox Code Playgroud)

$ cat ~/.freetds.conf:

 [SERVER001]
   host = 192.168.8.101
   port = 1433
   tds version = 8.0
   client charset = UTF8
Run Code Online (Sandbox Code Playgroud)

$ cat ~/.odbc.ini:

  [SMS_GTWY]
  Description = SERVER001 Server
  Driver      = …
Run Code Online (Sandbox Code Playgroud)

sql-server macos odbc unixodbc freetds

8
推荐指数
1
解决办法
1万
查看次数

PDO dblib日期格式与tsql不同

我有一台运行PHP的CentOS 7机器,安装了webtatic PHP 5.6和php56w-mssql软件包.我的应用程序位于连接到MSSQL 2012数据库的Laravel框架中.

我已经修改了locales.conf文件,以便它拥有它

[default]
    date format = %Y-%m-%d %I:%M:%S.000
Run Code Online (Sandbox Code Playgroud)

当从tsql中运行查询时,我会返回正确格式化的日期,包括最后的毫秒数.但是,当以PHP交互模式或通过工匠修补程序运行查询时,我得到一个没有尾随毫秒的日期格式.

我有一台运行完全相同配置的Ubuntu机器,并且tsql,PHP和artisan tinker都给了我正确格式化的日期,这只是这个CentOS机器的一个问题.

freetds.conf为它的全局设置设置了tds版本7.4并且具有主机条目(这是Laravel中当前配置的),即

[fancy]
    host = 10.0.0.12
    port = 1433
    database = fancy
    tds version = 7.4
    client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)

php pdo centos freetds laravel

8
推荐指数
0
解决办法
409
查看次数

使用带有'Windows凭据'的Linux上的python连接到MS SQL Server

有没有办法使用Windows Domain Credentials在Linux上使用python连接到MS SQL Server数据库?

我可以使用Windows凭据从我的Windows机器上完美地连接,但尝试使用pyodbs + freetds + unixodbc从linux python中做同样的事情

>>import pyodbc
>>conn = pyodbc.connect("DRIVER={FreeTDS};SERVER=servername;UID=username;PWD=password;DATABASE=dbname")
Run Code Online (Sandbox Code Playgroud)

导致此错误:

class 'pyodbc.Error'>: ('28000', '[28000] [unixODBC][FreeTDS][SQL Server]Login incorrect. (20014) (SQLDriverConnectW)')
Run Code Online (Sandbox Code Playgroud)

我确定密码写得正确,但我尝试了很多不同的用户名组合:

DOMAIN\username
DOMAIN\\username
Run Code Online (Sandbox Code Playgroud)

甚至

UID=username;DOMAIN=domain
Run Code Online (Sandbox Code Playgroud)

无济于事.有任何想法吗?

python sql-server unixodbc pyodbc freetds

7
推荐指数
2
解决办法
2万
查看次数

在ubuntu上使用pyodbc在SQL Server上插入图像字段

我正在使用Ubuntu 9.04

我安装了以下软件包版本:

unixodbc and unixodbc-dev: 2.2.11-16build3
tdsodbc: 0.82-4
libsybdb5: 0.82-4
freetds-common and freetds-dev: 0.82-4
python2.6-dev
Run Code Online (Sandbox Code Playgroud)

我这样配置/etc/unixodbc.ini:

[FreeTDS]
Description             = TDS driver (Sybase/MS SQL)
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
CPTimeout               = 
CPReuse         = 
UsageCount              = 2
Run Code Online (Sandbox Code Playgroud)

我这样配置/etc/freetds/freetds.conf:

[global]
    tds version = 8.0
    client charset = UTF-8
    text size = 4294967295
Run Code Online (Sandbox Code Playgroud)

我已经抓住pyodbc修订31e2fae4adbf1b2af1726e5668a3414cf46b454fhttp://github.com/mkleehammer/pyodbc,并使用安装了" python setup.py install"

我在我的本地网络上安装了一台安装了Microsoft SQL Server 2000的Windows机器,然后侦听本地IP地址10.32.42.69.我有一个名为"Common"的空数据库.我有用户"sa",密码为"secret",具有完全权限.

我使用以下python代码来设置连接:

import pyodbc
odbcstring = "SERVER=10.32.42.69;UID=sa;PWD=secret;DATABASE=Common;DRIVER=FreeTDS"
con = pyodbc.connect(odbcstring) …
Run Code Online (Sandbox Code Playgroud)

python sql-server image pyodbc freetds

7
推荐指数
1
解决办法
6352
查看次数

SQL Server错误1934发生在INSERT到表与计算列PHP/PDO上

将计算列添加到SQL Server 2005中的表后,我收到以下消息INSERT,仅通过PHP(使用PDO)它在SQL Server Managment Studio中正常工作.

为了确保我的一切正确,我使用SQL Server Profiler设置了跟踪,并将INSERT语句复制/粘贴到SQL Server Managment Studio中.它在SSMS中运行得很好,但在PHP中仍然失败.

添加联系人时出错:SQLSTATE [HY000]:常规错误:1934常规SQL Server错误:检查来自SQL Server [1934]的消息(严重级16)[(null)]

php sql-server pdo freetds

7
推荐指数
2
解决办法
9532
查看次数

Laravel连接到SQL Server 2008命名实例

我正在尝试从Ubuntu机器连接一个SQL服务器,除了命名实例之外,每个方法都很好用:

这很有效

'data' => array(
            'driver'   => 'sqlsrv',
            'host'     => 'xxxx',
            'port'     => 1433,
            'database' => 'db',
            'username' => 'user',
            'password' => 'pwd',
            'prefix'   => '',
        ),
Run Code Online (Sandbox Code Playgroud)

这不

  'data' => array(
                'driver'   => 'sqlsrv',
                'host'     => 'yyyy\NAMEDINSTANCE',
                'port'     => 1433,
                'database' => 'db',
                'username' => 'user',
                'password' => 'pwd',
                'prefix'   => '',
            ),
Run Code Online (Sandbox Code Playgroud)

我总是最终得到这个错误:

exception 'PDOException' with message 'SQLSTATE[HY000] Unknown host machine name (severity 2)' in /var/www/public/my.api/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:47
Run Code Online (Sandbox Code Playgroud)

我尝试了所有可能的组合:

  • 主持人\ INSTANCE
  • 主持人/实习
  • 主持人\\实例

有人能帮我吗 ?

编辑 …

php sql-server freetds laravel

7
推荐指数
1
解决办法
5259
查看次数

php dblib,错误:SQLSTATE [HY000]未知主机名称(严重性2)

我正在使用mac计算机OSX 10.9.Freetds和unixODBC已经安装在我的计算机上并作为扩展添加到php,试图连接到远程MSSQL服务器.以下是我的连接测试:

<?php 
$dbh = new PDO('dblib:host=Hostname ;dbname=Dbname', 'user', 'pw'); 
if (!$dbh) {
    die('Something went wrong while connecting to MSSQL');
}
?>
Run Code Online (Sandbox Code Playgroud)

错误日志文件显示:

[error] [client 127.0.0.1] PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] Unknown host machine name (severity 2)
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢 ?如果我使用终端连接到同一个数据库,我的freetds和unixODBC似乎正常工作:

$ isql Hostname user pw 
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 
Run Code Online (Sandbox Code Playgroud)

$ tsql -S Hostname  -U user
Password: 
locale is "en_US.UTF-8"
locale …
Run Code Online (Sandbox Code Playgroud)

php sql-server macos pdo freetds

7
推荐指数
1
解决办法
5968
查看次数

在最近的Windows补丁和TLS1被禁用后,FreeTDS无法连接到SQL Server

我遇到了一个奇怪的问题,FreeTDS(MacOS 10.11.5)没有连接到运行在Windows Server 2012 r2上的SQL Server 2014,而我之前已经能够连接到这个(大约一周左右).上周的服务器一直在进行安全加固(最近的2012 r2补丁,加上其他东西*我假设是罪魁祸首,但我的本地开发机器(实际上只有我机器上的FreeTDS)似乎是补丁后唯一的问题.

我怀疑导致问题的原因在于RC4密码和SSL 2.0&TLS 1.0被禁用,但我不知道如何修复它.

要清楚,不像其他类似的问题 - 我不能通过任何方式连接freetds到DB01,但我可以连接其他驱动程序到DB01(但我正在开发一个python应用程序,在这个实例中需要freetds)和其他机器可以连接到DB01 .

基本错误是:

$ tsql -S DB01 -U db_user
Password: ****************
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20002 (severity 9):
    Adaptive Server connection failed
There was a problem connecting to the server
Run Code Online (Sandbox Code Playgroud)

没有超级帮助 - 我已经完成了正常的故障排除,包括尝试各种TDS版本,在命令行上使用不同的开关等.

该日志还指出存在SSL问题的可能性 - 例如,tls.c日志记录"handshake failed",包含字符串"SSL_Self_Signed_Fallback"的数据包(否则数据包不可读):

net.c:216:Connecting to 000.000.000.000 port 1433 (TDS version 7.4)
net.c:242:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:343:tds_open_socket() succeeded
packet.c:741:Sending …
Run Code Online (Sandbox Code Playgroud)

sql-server ssl freetds

7
推荐指数
2
解决办法
5802
查看次数

如何在MSSQL中存储和检索扩展的ASCII字符

我很惊讶我无法通过搜索找到这个问题的直截了当的答案.

我有一个PHP的Web应用程序,它接受用户输入.由于应用程序的性质,用户可能经常使用扩展的ASCII字符(也称为"ALT代码").

我目前的具体问题是使用ALT代码26,这是一个右箭头(→).这将伴随其他文本存储在同一字段中(例如,'this?that').

我的列类型是NVARCHAR.

这是我尝试过的:

  1. 我尝试过不进行转换,只是正常插入值,但值存储为thisâ??that.

  2. 我尝试使用PHP将值转换为UCS-2 iconv('UTF-8', 'UCS-2', $value),但是我收到了一个错误Unclosed quotation mark after the character string 't'..查询最终看起来像这样:UPDATE myTable SET myColumn = 'this?!that'.

  3. 我已尝试进行上述转换,然后在引用值之前添加N,但我收到相同的错误消息.查询如下所示:UPDATE myTable SET myColumn = N'this?!that'.

  4. 我已经尝试删除UCS-2转换,只是在引用值之前添加N,并且查询再次起作用,但值存储为thisâ that.

  5. 我尝试utf8_decode($value)在PHP中使用,但随后箭头被替换为问号.

所以任何人都可以回答(看似简单的)问题,如何将这个值存储在我的数据库中,然后按照最初输入的方式检索它?

我正在使用PHP 5.5和MSSQL 2012.如果驱动程序/操作系统版本的任何问题发挥作用,它是通过FreeTDS连接的Linux服务器.没有可能改变这一点.

php sql-server freetds sql-server-2012 php-5.5

7
推荐指数
1
解决办法
1108
查看次数