问题标签 [tiny-tds]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
204 浏览

ruby - 来自 SQL Server 的日期时间在 Ruby 中解析不正确

我正在使用 Sinatra 编写一个将由 Android 应用程序使用的 Web 服务。Microsoft SQL Server 中使用的数据库。

存储过程调用是在 Ruby 中进行的:

GetTraces 存储过程返回一个包含日期时间对象的列。当服务器和客户端存在于同一时区时,将返回正确的结果。当服务器和客户端在不同的时区时,返回不正确的结果。

例如,如果我使用 2013-10-16T06:1500Z 作为开始日期,使用 2013-10-16T09:1500Z 作为结束日期,那么我应该得到该范围内的日期时间。当客户端和服务器位于不同的时区时,我得到以下信息:

我手动测试了存储过程,它返回了正确的结果。Ruby 中显示的结果不是存储过程返回的结果。Activerecord 和/或 Tiny tds 似乎正在错误地解析日期时间。

以下是手动执行存储过程时返回的日期时间示例:

我已经用以下内容覆盖了 ActiveRecord,以解决以前从 SQL Server 解析日期时间的问题。我在网上找到了这个解决方案。

对此问题的任何见解表示赞赏。谢谢!

0 投票
0 回答
507 浏览

ruby-on-rails - TinyTDS:偏移量从选择中删除聚合函数

我有以下查询

这给了我以下错误

TinyTds::Error: 列 'User.created_at' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中:

EXEC sp_executesql N'SELECT TOP (10) [__rnt].* FROM (SELECT ROW_NUMBER() OVER (ORDER BY type ASC) AS [__rn], first_name, created_at FROM Users GROUP BY first_name ) AS [_ rnt] WHERE [ _rnt] .[_ rn] > (10) 按 [ _rnt].[__rn] ASC' 排序

ActiveRecord::StatementInvalid: TinyTds::Error: 列 'User.created_at' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。:

EXEC sp_executesql N'SELECT TOP (10) [__rnt].* FROM (SELECT ROW_NUMBER() OVER (ORDER BY type ASC) AS [__rn], first_name, created_at FROM [Users] GROUP BY first_name ) AS [_ rnt] WHERE [ _rnt].[_ rn] > (10) 按 [ _rnt].[__rn] ASC' 排序

为什么在 created_at 上生成的上述查询没有 MAX?

当我在没有 的情况下运行相同的查询时offset,一切都很好。以下查询运行良好,并且在 created_at 上保留了 MAX

此外,这只是 sql server 的问题。如果我在 postgres 或 mysql 中运行相同,它工作正常。

这是 TinyTDS 的已知问题吗?我怎么解决这个问题?

更新:

我找到了导致我的问题的线路

lib/arel/visitors/sqlserver.rb(line 373)(activerecord-sqlserver-adapter-3.2.10)

0 投票
1 回答
591 浏览

ruby-on-rails - SqlServer:从字符串转换为唯一标识符时转换失败

当没有取消的用户时,上面的查询给了我以下错误。

ActiveRecord::StatementInvalid: TinyTds::Error: 从字符串转换为唯一标识符时转换失败。: EXEC sp_executesql N'SELECT [users].* FROM [userss] WHERE (user_id not in (N''''))'

我该如何解决?

0 投票
1 回答
721 浏览

ruby-on-rails - Ruby on Rails - 带有 Windows 7 的微型 TDS

我在 Windows 7 64 位中使用 Tiny TDS。

配置:

数据库.yml

在导轨控制台中

我不知道为什么连接被关闭!

0 投票
1 回答
1317 浏览

ruby - 使用子查询订购 Sequel 数据集并使用偏移量限制

在尝试根据子查询的结果对数据集进行排序时,我遇到了一个奇怪的问题。在我尝试添加带有偏移量的限制之前,它工作正常,然后我收到一条错误消息,指出排序列名称无效。这是一个显示问题的调试器会话(这是一个有点愚蠢的查询,我只是想尽可能地简化真正的查询,同时仍然得到错误)。

首先我只是创建一个简单的选择查询,带有一个子查询

...到目前为止一切都很好,让我们添加一个限制

仍然可以,但是如果我们将限制更改为具有偏移量...

对我来说似乎是一个错误,但我会很高兴发现我只是愚蠢。知道出了什么问题吗?

我正在使用续集 4.3.0 和 tiny_tds 0.5.1。

0 投票
2 回答
2203 浏览

ruby-on-rails - 尝试从 SQL Server 访问查询结果时出现“参数数量错误(1 为 2)”

我正在使用 Ruby 2 和 Rails 4 并尝试使用 Tiny_TDS 和 activerecord-sqlserver-adapter gems 连接到 sql server 实例。它似乎可以毫无问题地连接到数据库,但是当我尝试访问返回的数据时,我收到一条错误消息:

这是我第一次尝试使用 Rails 访问 sql server,所以我可能做错了。有人知道我在搞砸什么吗?

我的控制器中有这个调用:

在我看来,我有以下内容(如果我从视图中删除它,页面加载正常):

eperson.rb 模型文件:

在我的 database.yml 中,我定义了“Other_db”,如下所示:

我的 gemfile 有以下内容:

下面是终端窗口中的输出

从日志/开发:

0 投票
2 回答
7798 浏览

ruby - 从数组中删除方括号?

我有一个试图加载到 SQL 语句中的数组。当我编译 SQL 语句并包含数组时,它还会将[]括号放入字符串中,我需要删除它们才能将其插入到我的数据库中。

这是我的代码:

电流输出:

期望的输出:

0 投票
1 回答
223 浏览

ruby - Ruby 代码在 Rufus 调度程序中抛出异常

我正在 debian linux 上执行一个控制器,它在无限循环中执行功能。除此之外,我正在使用 Rufus Scheduler 来安排一个在特定时间后运行的函数,比如说 1 分钟。一旦函数在 Rufus 中正确执行,我会收到以下错误

0 投票
2 回答
2250 浏览

ruby - 如何在循环中使用 Ruby Sequel 和 Tiny_TDS 保持与 SQL Server 的持久连接

我有一个需要在服务器上连续运行的 ruby​​ 脚本。我已经使用 daemon gem 对其进行了守护,并且在我的脚本中我让它在无限循环中运行,因为 daemon gem 处理启动我的脚本的进程的启动和停止。在我的脚本中,我首先使用 Sequel gem 和 tiny_tds 设置我的数据库实例。像这样:

然后我有一个loop do就是我的无限循环。在里面,我测试看看我是否有一个连接DB.test_connection,然后我每隔一秒左右查询一次数据库,以检查是否有新的内容使用如下查询:

然后在我的逻辑结束时,就在我再次循环之前,我这样做:

所有这一切都很好用了大约一个小时到一个半小时,一切检查表,执行逻辑,删除行等,然后它死了并给了我这个错误消息TinyTds::Error: Adaptive Server connection timed out

我的问题,为什么会这样?我需要以不同的方式重新格式化我的代码吗?为什么 DB.test_connection 不做它宣传的事情?上面的文档说它检查连接池中的连接,如果找到它就使用它,否则创建一个新连接。

任何帮助将非常感激

0 投票
1 回答
235 浏览

ruby - TinyTDS 未定义符号 dbsetluser

在过去的几天里,我一直在为这个问题而苦苦挣扎,但我没有想法。我正在开发一个有些过时的应用程序,现在我需要在其中添加对 SQL Server 的支持。我已经设法让它在本地工作(Ubuntu 12.04),但是当我尝试在 Ubuntu 8.04 实例上的 Rackspace 上重现它时遇到以下错误:

我正在运行的堆栈是:

  • Ubuntu 8.04
  • 稀土 1.8.7-2012.02
  • FreeTDS 0.92.377(从源代码编译)
  • TinyTDS 0.6.0.rc1(也试过 0.5.1)

我可以使用 isql 成功连接到 SQL Server,这让我认为 FreeTDS 和 ODBC 设置正确。但是每当我尝试从 Ruby 与 TinyTds 连接时,我都会收到上述错误。

我曾尝试在 Google 群组中发布 rails-sqlserver-adapter 的帖子,但论坛似乎已被审核,我的问题尚未出现。

我相当肯定这与 TinyTds 找不到库(我认为应该在某处可用)有关,但我不知道如何实现这一点。

作为最后的手段,我将使用 12.04 从头开始​​构建服务器,但我更愿意让现有系统正常工作。

更新

根据@Casper 的建议,我已尝试与之建立联系odbc,但现在出现了不同的错误

即使我可以成功连接 isql 和 sqsh。

谢谢