尝试查询本地 SQL 服务器数据库时出现无效对象名称请求错误
Invalid object name request error occurs upon trying to query local SQL Server database
我已成功连接到生产 SQL 服务器数据库并使用 knex 查询它。然后,我在 macOS 上使用 Docker 和 SQL Operations Studio 在本地恢复了该数据库(在 this walkthrough 之后)。我能够连接到它并从 SQLOPS 中查询它。我现在正尝试以编程方式连接并查询本地数据库,而不是生产数据库。我更新了配置以填写本地托管数据库的相关信息,但我认为它不完全正确,因为我收到以下错误:
RequestError: select top (@p0) * from [OurTableName] where [SomeID] = @p1 - Invalid object name 'OurTableName'.
研究该错误表明它可能是配置问题。这是我的配置对象:
{
client: 'mssql',
connection: {
user: 'sa',
password: 'password',
server: 'localhost',
port: 1433,
options: {
encrypt: false,
database: 'ourdbname',
},
},
pool: {
min: 2,
max: 10,
},
}
你看出问题出在哪里了吗?在我能够以编程方式连接到它之前,我还需要在 SQLOPS 内做些什么吗?
这通常是您所连接的数据库与保存 table 的数据库之间的问题。 'sa'
登录默认为 master
数据库。尝试使用这种类型的请求:
select top (@p0) *
from [OurDBName].[dbo].[OurTableName]
where [SomeID] = @p1
查看 Knex 自己的 SQL 服务器配置文件 here,他们的配置格式不同。不确定您的配置来自何处,但请试一试:
{
client: 'mssql',
connection: testConfig.mssql || {
user: 'sa',
password: 'S0meVeryHardPassword',
server: 'localhost',
database: 'knex_test',
},
pool: pool,
migrations: migrations,
seeds: seeds,
}
当我遇到这个问题是因为 "default_database_name" 被设置为错误的 DB:
首先检查“default_database_name”是什么,执行以下查询:
SELECT sp.name , sp.default_database_name FROM sys.server_principals
sp WHERE sp.name = SUSER_SNAME();
如果这确实设置为错误的数据库名称,您可以更改它,如下所示:
ALTER LOGIN sa WITH DEFAULT_DATABASE = TheRightDbName;`
现在设置了正确的数据库,可以像往常一样找到对象。
我已成功连接到生产 SQL 服务器数据库并使用 knex 查询它。然后,我在 macOS 上使用 Docker 和 SQL Operations Studio 在本地恢复了该数据库(在 this walkthrough 之后)。我能够连接到它并从 SQLOPS 中查询它。我现在正尝试以编程方式连接并查询本地数据库,而不是生产数据库。我更新了配置以填写本地托管数据库的相关信息,但我认为它不完全正确,因为我收到以下错误:
RequestError: select top (@p0) * from [OurTableName] where [SomeID] = @p1 - Invalid object name 'OurTableName'.
研究该错误表明它可能是配置问题。这是我的配置对象:
{
client: 'mssql',
connection: {
user: 'sa',
password: 'password',
server: 'localhost',
port: 1433,
options: {
encrypt: false,
database: 'ourdbname',
},
},
pool: {
min: 2,
max: 10,
},
}
你看出问题出在哪里了吗?在我能够以编程方式连接到它之前,我还需要在 SQLOPS 内做些什么吗?
这通常是您所连接的数据库与保存 table 的数据库之间的问题。 'sa'
登录默认为 master
数据库。尝试使用这种类型的请求:
select top (@p0) *
from [OurDBName].[dbo].[OurTableName]
where [SomeID] = @p1
查看 Knex 自己的 SQL 服务器配置文件 here,他们的配置格式不同。不确定您的配置来自何处,但请试一试:
{
client: 'mssql',
connection: testConfig.mssql || {
user: 'sa',
password: 'S0meVeryHardPassword',
server: 'localhost',
database: 'knex_test',
},
pool: pool,
migrations: migrations,
seeds: seeds,
}
当我遇到这个问题是因为 "default_database_name" 被设置为错误的 DB:
首先检查“default_database_name”是什么,执行以下查询:
SELECT sp.name , sp.default_database_name FROM sys.server_principals
sp WHERE sp.name = SUSER_SNAME();
如果这确实设置为错误的数据库名称,您可以更改它,如下所示:
ALTER LOGIN sa WITH DEFAULT_DATABASE = TheRightDbName;`
现在设置了正确的数据库,可以像往常一样找到对象。