[Microsoft][ODBC SQL Server Driver][SQL Server]拒绝了对对象'用户信息'(数据库'lianxi',所有者'db

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Microsoft][ODBC SQL Server Driver][SQL Server]拒绝了对对象'用户信息'(数据库'lianxi',所有者'db相关的知识,希望对你有一定的参考价值。

[Microsoft][ODBC SQL Server Driver][SQL Server]拒绝了对对象'用户信息'(数据库'lianxi',所有者'dbo')的 SELECT 权限

数据库能连接上,就是打不开这张表

当前用户没有对数据库’lianxi‘的select权限,可以考虑使用sa用户,这是个管理员账号,拥有对整个数据库系统进行操作的权限。
也可以考虑赋予当前用户select的权限,然后就可以select了。
在sa用户下执行grant select on tablename to username追问

我用sa反而连不上了

参考技术A 你没有操作此表的的权限.....建议用sa登陆企业管理器操作

java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] 对象名“表名”无效

【中文标题】java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] 对象名“表名”无效【英文标题】:java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] Invalid object name 'table name' 【发布时间】:2012-05-16 11:35:19 【问题描述】:

当我使用 JDBC ODBC 驱动程序将 Java 连接到 Mssql 时

try 

    ps=conn.prepareStatement("UPDATE products SET stock=? WHERE id=?");

    ps.setInt(1, prods.getStock());
    ps.setInt(2, prods.getId());

    int b = ps.executeUpdate();

    if(b!=0)
    
        System.out.println("success");
    
    else
    
        System.out.println("Fail");
     

catch(SQLException e)

    System.out.println(e);

这个 catch 块引发了这个异常

java.sql.SQLException [Microsoft] [ODBC SQL Server Driver]
  [SQL Server] Invalid object name 'products'

我从过去 2 天开始就在这部分工作。我将如何解决这个异常?

【问题讨论】:

您确定您的数据库中有表产品吗? 尝试 UPDATE [products] 看看它是否有效 也许您选择了错误的数据库?你能说明连接是如何创建的吗? 是的,我确信我的数据库有产品表 我已经使用了那个 UPDATE[products] 我得到了同样的错误 【参考方案1】:

找不到表时会抛出此错误消息。这可能有几个原因:

您正在连接到不同的数据库 表已删除 该表位于另一个数据库架构中 您的用户不再拥有对该表的读取权限

【讨论】:

表存在,数据库也一样,但仍然报错。 这里我用的是windows认证有什么问题吗? @pardhu:您的 Windows 用户在您的 MSSQL Server 中有权限吗?您可以检查您是否使用 MS SQL Studio 将该用户连接到您的数据库并尝试浏览您需要的表。 我在浏览那个表,看那些数据都是可能的,那么我这里需要哪些权限呢? @pardhu:你能显示你的连接字符串吗?您还确定该表在您用户的默认架构中吗?【参考方案2】:

我想您的连接字符串没有默认数据库 - 您可能正在连接到“master”,在这种情况下,上述方法将不起作用

您可以通过使用数据库和架构名称限定查询来测试这一点:

例如

ps=conn.prepareStatement("UPDATE [YourDatabaseName].[schema].products SET stock=? WHERE id=?"); 

将您的值放在需要的位置(标准默认架构是“dbo”,例如 ProductsDatabase.dbo.products)

如果这可行,那么您的连接字符串不正确

【讨论】:

我在这里使用这个查询“master.dbo.products”写我也遇到同样的错误。请帮助我 产品表是在“主”数据库还是其他数据库中?我希望您为该表创建了一个新数据库,在这种情况下,您不应放置 master.dbo.products 而是 .dbo.products - 您能显示您的连接字符串吗?【参考方案3】:

如果表不存在,或者连接字符串有错误,通常会引发此异常。可能没有连接到正确的数据库?

【讨论】:

这里我用的是windows认证有什么问题吗?【参考方案4】:

我遇到了类似的问题。在我的情况下,问题的原因是运行报告的用户将 DEFAULT_DATABASE 指向主数据库,在将其更改为正确的数据库后,它能够找到对象。

谢谢

【讨论】:

以上是关于[Microsoft][ODBC SQL Server Driver][SQL Server]拒绝了对对象'用户信息'(数据库'lianxi',所有者'db的主要内容,如果未能解决你的问题,请参考以下文章

使用workbeanch将sqlserver2008R2迁移到mssql在unbutu1604上

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)

PHP 警告:odbc_connect():SQL 错误:[Microsoft][ODBC Microsoft Access Driver]一般错误无法打开临时注册表项(易失性)

[Microsoft][ODBC SQL Server Driver]超时已过期

使用 ODBC 将数据从 Microsoft SQL 迁移到 Elasticsearch

java.sql.SQLException:[Microsoft][ODBC Driver Manager] 无效的描述符索引