gpt4 book ai didi

sql-server - 在存储过程中的截断表上发生错误

转载 作者:行者123 更新时间:2023-12-03 12:30:11 26 4
gpt4 key购买 nike

我有一个很奇怪的情况,我试图研究网上的答案无济于事。我正在使用 SQL Server 2008 R2。

我创建了一个存储过程,它有一个 TRUNCATE TABLE其他 T-SQL 语句中的语句。

当它从 SQL Server Management Studio 运行时,存储过程运行没有错误。

从 Windows 窗体应用程序(使用 .NET Framework 4 用 VB.Net 编写)运行时,出现错误

Cannot find the object tbl_Test1 because it does not exist or you do not have permissions



在应用程序中正确设置了与数据库的连接,更奇怪的是我以完全相同的方式创建了其他存储过程,它们有自己的 TRUNCATE TABLE语句,这些语句仍然可以正常运行。

User_Role 的存储过程有执行权限,其中调用应用程序正在登录。

tbl_Test1确实存在。

我已经尝试了几件事,并且从这样做之后,对整个情况变得更加困惑。
  • 如果我放一个 Select * from tbl_Test1TRUNCATE 之前,然后存储过程工作。
  • 因为我稍后会返回一个选择,所以我希望它不存在。所以我重新编码并做了一个 select @Count = count(*) from tbl_Test1之前TRUNCATE语句,这失败了,上面说明了 tbl_Test1 的相同错误不存在或没有权限。

  • 我完全不知道为什么会发生这种情况。我还有其他几个存储过程,其中包含截断语句,它们的创建方式与此完全相同,并且在从应用程序调用时可以正常工作。

    任何人都可以帮助或阐明我的问题。

    提前谢谢了

    最佳答案

    所有权链接doesn't applyTRUNCATE TABLE .

    您需要明确授予该权限( the minimum permission required is ALTER on table_name )或使用 EXECUTE AS在存储过程中。捐赠 EXEC对存储过程的权限是不够的。

    关于sql-server - 在存储过程中的截断表上发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13414446/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com