Ada*_*dam 3 sql-server stored-procedures truncate sql-server-2008 user-permissions
我有一个非常奇怪的情况,我试图从网上研究答案无济于事.我正在使用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
存在.
我已经尝试了几件事,并且从这样做开始,对这整个情况变得更加困惑.
如果我把Select * from tbl_Test1
之前TRUNCATE
,那么存储过程的工作.
因为我稍后会返回一个选择,我宁愿这不存在.所以我select @Count = count(*) from tbl_Test1
在TRUNCATE
语句之前重新编码并做了一个,并且在上面说明tbl_Test1
不存在或没有权限时出现同样的错误.
我完全不知道为什么会发生这种情况.我有几个其他存储过程,其中包含truncate语句,以与此语句完全相同的方式创建,并且从应用程序调用时工作正常.
任何人都可以帮助或解决我的问题.
提前谢谢了
所有权链并不适用于TRUNCATE TABLE
.
您需要明确授予该权限(所需的最小权限ALTER
在table_name上)或EXECUTE AS
在存储过程中使用.给予EXEC
对存储过程的权限是不够的.