尝试查询本地SQL Server数据库时发生无效的对象名称请求错误

时间:2018-08-01 16:09:34

标签: sql-server knex.js

我已经成功连接到生产SQL Server数据库,并使用knex查询了它。然后,我在macOS上使用Docker和SQL Operations Studio在本地还原了该数据库(遵循this walkthrough)。我能够连接到它并从SQLOPS中查询它。我现在正尝试以编程方式而不是生产数据库连接并查询该本地数据库。我更新了配置,以填写本地托管数据库的相关信息,但我认为它并不完全正确,因为我收到以下错误:

  

RequestError:从[OurTableName]中选择顶部(@ p0)*,其中[SomeID] = @ p1-无效的对象名称'OurTableName'。

研究该错误表明这可能是配置问题。这是我的配置对象:

{
  client: 'mssql',
  connection: {
    user: 'sa',
    password: 'password',
    server: 'localhost',
    port: 1433,
    options: {
      encrypt: false,
      database: 'ourdbname',
    },
  },
  pool: {
    min: 2,
    max: 10,
  },
}

您知道问题出在哪里吗?在能够以编程方式连接到SQLOPS之前,我还需要在SQLOPS中做些其他事情吗?

2 个答案:

答案 0 :(得分:1)

这通常是您连接到哪个数据库以及哪个数据库保存该表的问题。 'sa'登录名默认为master数据库。尝试使用这种类型的请求:

select top (@p0) * 
from [OurDBName].[dbo].[OurTableName] 
where [SomeID] = @p1 

答案 1 :(得分:1)

通过Knex自己的SQL Server配置文件here,他们的配置格式不同。不确定您的配置来自何处,但请尝试一下:

{
    client: 'mssql',
    connection: testConfig.mssql || {
      user: 'sa',
      password: 'S0meVeryHardPassword',
      server: 'localhost',
      database: 'knex_test',
    },
    pool: pool,
    migrations: migrations,
    seeds: seeds,
}