标签: freetds

Windows 上的 Ruby 2.0 连接到 MS SQL varchar(max) 截断为 2048

背景:我编写了一些 ruby​​ 转换脚本,它们从 MS SQL 获取数据进行转换,然后将其存储回数据库我正在使用微型 tds gem,它可以在 freetds 上工作

--问题:对于 sql 中 varchar max 且字符串长度大于 2048 的列,当使用微小 tds 提取数据时,这些列会被截断为 2048 长度。

Freetds 协议 7.2 确实解决了这个问题,但在 Windows 平台上不可用,代码在 Mac 上完美运行。但由于与 ETL 工具集成,我必须将其部署在 Windows 计算机上。

——有没有人能解决这个问题。

ruby sql-server freetds varcharmax

5
推荐指数
1
解决办法
255
查看次数

在 Ubuntu 中使用 R 在 ODBC 上连接到 Microsoft SQL Server

我能够让它在 Windows 7 上完全运行,但我必须将它移到 Linux 服务器上。我现在正在 VM 中运行 Ubuntu 16.04.1 LTS 64 位以进行测试,然后再在服务器上复制该过程。

我很确定问题出在我的 FreeTDS 或 DSN 设置中。
我应该停止浪费时间而只使用 Python 吗?或者我会在 ODBC 和 unixODBC 上遇到同样的问题吗?

完整的 R 脚本:

library(RODBC)

#saving from a .csv to dataframe df
df <- read.csv("./Documents/test.csv")

#creating connection to db
conn <- odbcDriverConnect('myDSN')

#writing
sqlSave(conn, df, tablename = 'dbo.test0', append = F, rownames = F, verbose = TRUE, safer = true, fast = F)
Run Code Online (Sandbox Code Playgroud)

控制台

> conn <- odbcDriverConnect('myDSN')
Run Code Online (Sandbox Code Playgroud)

返回错误信息:

Warning messages:
1: In odbcDriverConnect("myDSN") :
  [RODBC] …
Run Code Online (Sandbox Code Playgroud)

sql-server unixodbc freetds rodbc ubuntu-16.04

5
推荐指数
1
解决办法
1881
查看次数

SQLAlchemy 返回字符串而不是日期时间对象

我正在使用 SQLAlchemy 连接到 SQL Server 数据库。我查询的表有一DATETIME列。在 Windows 上,SQLAlchemy 对象上的结果属性是一个 Pythondatetime对象。在 Linux 上,它是一个字符串。

我的 SQLAlchemy 类看起来像这样

class MyTable(Model):
    id_ = db.Column('Id', db.Integer, primary_key=True, index=True)
    as_of_date = db.Column('AsOfDate', db.DateTime, nullable=False, server_default=db.FetchedValue())
    # Other columns
Run Code Online (Sandbox Code Playgroud)

在 Windows 上,我得到了这个

>>db.session.query(MyTable.as_of_date).first()
datetime.datetime(2006, 11, 30, 0, 0)
Run Code Online (Sandbox Code Playgroud)

在 Linux 上,我得到了这个

>>db.session.query(MyTable.as_of_date).first()
('2006-11-30 00:00:00.00000000',)
Run Code Online (Sandbox Code Playgroud)

我的连接字符串看起来像这样

Linux
mssql+pyodbc:///?odbc_connect=DRIVER={FreeTDS};Server=my_server;Port=1433;Database=my_database;UID=my_user;PWD=my_password;TDS_Version=8.0;

Windows
mssql+pyodbc://my_user:my_password@my_server/my_database?driver=SQL Server Native Client 11.0
Run Code Online (Sandbox Code Playgroud)

我猜这与 FreeTDS 驱动程序有关。虽然SQLAlchemy的文档状态

支持日期和时间。大多数 MSSQL 驱动程序要求将绑定参数转换为 datetime.datetime() 对象, 如果需要,则从字符串处理结果。DATE 和 TIME 类型不适用于 MSSQL 2005 和更早版本 …

python database datetime sqlalchemy freetds

5
推荐指数
1
解决办法
1735
查看次数

Rails MSSQL - TinyTds::错误:Adaptive Server 连接超时

我想尝试让 Rails 和 MSSQL 在我们的 CI 工具 CircleCI 中进行对话。我在 Mac 上工作,所以设置起来相当轻松。我使用 Homebrew 在本地安装了 FreeTDS。然后我生成了一个 MSSQL docker 映像,并在 Rails 应用程序中设置我的配置以指向它,一切正常。

CircleCI 有点不同。

我做了以下事情。

在我的 gemfile 中添加:

# mssql database gems
gem 'tiny_tds'
gem 'activerecord-sqlserver-adapter'
Run Code Online (Sandbox Code Playgroud)

修改了我们的database.yml文件:

default: &default
  adapter: sqlserver
  pool: 5
  encoding: utf8
  mode: dblib

development:
  <<: *default
  host: localhost
  database: collections_development
  username: sa
  password: P@55w0rd

test:
  <<: *default
  host: localhost
  database: collections_test
  username: sa
  password: P@55w0rd
Run Code Online (Sandbox Code Playgroud)

我用以下命令构建了一个 docker 镜像:

FROM circleci/ruby:2.4.1-node-browsers

RUN set -ex \
  && sudo apt-get install build-essential …
Run Code Online (Sandbox Code Playgroud)

sql-server ruby-on-rails freetds docker circleci

5
推荐指数
0
解决办法
2670
查看次数

Python - 无法打开 lib 'libtdsodbc.so':找不到文件

非常感谢对此问题的任何帮助。

目标:使用 FreeTDS 将 Django 连接到 MSSQL 服务器。我正在使用 Debian x64 盒子。

问题:尝试建立连接时,我得到以下信息。

('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'libtdsodbc.so' : file not found (0) (SQLDriverConnect)")
Run Code Online (Sandbox Code Playgroud)

/etc/odbcinst.ini的配置如下

[FreeTDS]
Description = FreeTDS
driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
Run Code Online (Sandbox Code Playgroud)

这些文件确实存在并且有 777 次测试访问权限。

连接字符串就像

cnxn = pyodbc.connect(
        'DRIVER={FreeTDS};SERVER=' + server + ';PORT=1443;DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
    cursor = cnxn.cursor()
Run Code Online (Sandbox Code Playgroud)

我的 odbcinst -j 读取(因为添加了符号链接)

unixODBC 2.3.1
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: …
Run Code Online (Sandbox Code Playgroud)

python sql linux pyodbc freetds

5
推荐指数
1
解决办法
6498
查看次数

PHP MS SQL Unix驱动程序-Microsoft或FreeTDS

我正在运行LAMP服务器,但现在需要连接到MS SQL(客户端请求)。我听说微软有驱动程序,但无法验证

有人知道Microsoft驱动程序是否可用于Unix吗?如果没有,我应该坚持使用FreeTDS吗?PHP似乎建议这样做,但是似乎缺少安装文档。任何一个方向都将不胜感激。

抱歉,我对设置PHP驱动程序不熟悉。

更新

只是出于某些背景,我正在从LAMP服务器运行Intranet,但需要连接到外部MS SQL DB Server(当然是Windows)上的数据源。我正在运行PHP5。

php sql-server lamp freetds

4
推荐指数
1
解决办法
1985
查看次数

FreeTDS的替代品?

我们正在为数据库运行带有Microsoft SQL Server的Linux服务器.有没有比FreeTDS更好的(最好是开源)c库我们可以使用?

谢谢

c c++ linux sql-server freetds

4
推荐指数
1
解决办法
1000
查看次数

使用centos上的freetds连接到ms sql 2005

我在从PHP连接到MS SQL 2005时遇到问题.

我可以从shell连接,使用...

tsql -S 10.0.0.134 -p 1433  -U gareth 
Run Code Online (Sandbox Code Playgroud)

输入一个简单的查询按预期工作...

1> SELECT @@VERSION AS MSSQL_VERSION
2> go
MSSQL_VERSION   
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
Nov 24 2008 13:01:59 
Copyright (c) 1988-2005 Microsoft Corporation
Express Edition on Windows NT 6.1 (Build 7601: Service Pack 1)
Run Code Online (Sandbox Code Playgroud)

但是,从PHP脚本尝试此操作不起作用...

$test = mssql_connect('10.0.0.134:1433', 'gareth', 'mypass');
Run Code Online (Sandbox Code Playgroud)

...并生成一个mssql_connect()[function.mssql-connect]:无法连接到服务器错误.

我可以看到/ usr/lib/php/modules中的mssql.so模块和phpinfo()显示模块已加载.

如果有人能给我看一下freetds.conf和odbc.conf的示例配置,我很乐意使用odbc_connect

谢谢

php sql-server centos freetds

4
推荐指数
1
解决办法
3723
查看次数

如何在Rails中连接到MS SQL

我正在尝试将遗留数据从MS SQL数据库迁移到我的Rails应用程序中.我在freetds中添加了正确连接的配置.在我的Gemfile中,我分别添加了tiny_tdsactiverecord-sqlserver-adapter.

我创建了一个文件来存放旧数据库中的类以转换为ActiveRecord:

class LegacyUser < ActiveRecord::Base
   establish_connection :legacy
   set_table_name 'users'
end

.
.
.
Run Code Online (Sandbox Code Playgroud)

database.yml的

legacy:
   adapter: sqlserver
   mode: odbc
   dsn: legacy_db_name
   host: db_host_name
   database: legacy_db_name
   port: 1433
   username: username
   password: password
Run Code Online (Sandbox Code Playgroud)

然后我有rake任务来转换数据:

legacy.rake

   desc 'migrate users'
   task :users => :environment do
     require 'lib/tasks/legacy_classes'

     LegacyUser.each do |user|
       begin
         new_user = User.new
         new_user.attributes = {
             :firstname => user.firstname,
             :lastname => user.lastname,
             :email => user.email,
             :created_at => Time.now,
             :updated_at => Time.now
         }
         new_user.save!

         puts "User #{user.id} successfully …
Run Code Online (Sandbox Code Playgroud)

sql-server freetds legacy-database ruby-on-rails-4 rails-activerecord

4
推荐指数
1
解决办法
5537
查看次数

cento 6.x上的pdo dblib

我正在尝试在CentOS 6.5版(最终版)64位上安装dblib.centos 6没有freetds所以我不得不从其他地方获得freetds.freetds-devel-0.91-2.1.x86_64.rpm.使用pecl下载并安装PDO DBLIB,但我陷入了困境.我收到的错误如下.

[root@rajesh PDO_DBLIB-1.0]# make
/bin/sh /root/php/PDO_DBLIB-1.0/libtool --mode=compile cc -I/usr/include/php/ext -DPDO_DBLIB_FLAVOUR=\"freetds\" -I. -I/root/php/PDO_DBLIB-1.0 -DPHP_ATOM_INC -I/root/php/PDO_DBLIB-1.0/include -I/root/php/PDO_DBLIB-1.0/main -I/root/php/PDO_DBLIB-1.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /root/php/PDO_DBLIB-1.0/pdo_dblib.c -o pdo_dblib.lo 
libtool: compile:  cc -I/usr/include/php/ext -DPDO_DBLIB_FLAVOUR=\"freetds\" -I. -I/root/php/PDO_DBLIB-1.0 -DPHP_ATOM_INC -I/root/php/PDO_DBLIB-1.0/include -I/root/php/PDO_DBLIB-1.0/main -I/root/php/PDO_DBLIB-1.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /root/php/PDO_DBLIB-1.0/pdo_dblib.c  -fPIC -DPIC -o .libs/pdo_dblib.o
In file included from /root/php/PDO_DBLIB-1.0/pdo_dblib.c:32:
/root/php/PDO_DBLIB-1.0/php_pdo_dblib_int.h:45:23: error: sybfront.h: No such file or directory
/root/php/PDO_DBLIB-1.0/php_pdo_dblib_int.h:46:20: error: sybdb.h: No such file or …
Run Code Online (Sandbox Code Playgroud)

php pdo pecl freetds centos6

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