【发布时间】:2012-11-05 01:14:42
【问题描述】:
我有一个非常奇怪的情况,我试图从网上研究答案,但无济于事。我正在使用 SQL Server 2008 R2。
我创建了一个存储过程,其中包含 TRUNCATE TABLE 语句以及其他 T-SQL 语句。
从 SQL Server Management Studio 运行时,存储过程运行时不会出错。
当从 Windows 窗体应用程序(使用 .NET Framework 4 用 VB.Net 编写)运行时,我收到了错误
找不到对象 tbl_Test1 因为它不存在或者你存在 没有权限
与数据库的连接已在应用程序中正确设置,更奇怪的是,我还以完全相同的方式创建了其他存储过程,使用它们自己的 TRUNCATE TABLE 语句,这些仍然可以正常运行。
对User_Role的存储过程有执行权限,调用应用程序正在登录。
表 tbl_Test1 确实存在。
我已经尝试了几件事,但由于这样做,我对整个情况变得更加困惑。
如果我在
TRUNCATE之前放置一个Select * from tbl_Test1,那么存储过程就可以工作。因为我稍后会返回一个选择,所以我希望它不存在。所以我重新编码并在
TRUNCATE语句之前执行了select @Count = count(*) from tbl_Test1,但失败并出现上述相同的错误,指出tbl_Test1不存在或没有权限。
我完全不知道为什么会发生这种情况。我还有其他几个存储过程,其中包含截断语句,创建方式与此完全相同,并且在从应用程序调用时工作正常。
任何人都可以帮助或阐明我的问题。
在此先感谢
【问题讨论】:
-
当我们不允许查看代码时,我们的调试能力很差。
-
存储过程中的所有代码都是 TRUNCATE TABLE tbl_Test1 以及其他 SQL 语句。没有实际放入代码的原因是我认为它不会增加任何问题。问题是 SP 在 Management Studio 中运行良好,但在 VB.NET 应用程序中运行良好。如果我的 SP 中没有 Truncate 语句,那么它可以正常工作(包括删除、选择和更新)。我看不出为什么 Truncate 在 Management Studio 中不起作用的原因。如果您认为代码对这个问题有帮助,我很乐意发布。
标签: sql-server sql-server-2008 stored-procedures truncate user-permissions