我正在尝试从我的网站运行一个禁用触发器的存储过程。以下是触发器的代码:
CREATE PROCEDURE [dbo].[DisableMyTrigger]
AS
BEGIN
alter table dbo.TableName DISABLE TRIGGER TriggerName
END
我还使用以下方法设置存储过程的权限:
Grant Exec on dbo.DisableMyTrigger To DBAccountName
DBAccountName已经能够运行其他存储过程以及动态SQL语句而不会出现问题。
以下是我的CFM页面中的代码:
<cfstoredproc datasource="myDatasource" procedure="DisableMyTrigger" />
这是我得到的错误:
[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][SQL Native Client][SQL Server]Cannot find the object "TableName" because it does not exist or you do not have permissions.
答案 0 :(得分:3)
DBAccountName是否具有TableName的权限?这些可以与整体模式(dbo)分开授予或撤销。
我不是dba,但DBAccountName是否允许执行DDL语句? (所以它可以通过编程方式执行禁用触发器等操作)
答案 1 :(得分:0)
它因为您连接到错误的db目录(假设是SQL Server)。您已连接到数据库但已连接到“默认”目录,这可能是“主”
我认为你可以在程序的开头加上一些东西,如:
使用DBName;
这会将您连接到正确的目录。
答案 2 :(得分:0)
您可能必须指定数据库。我不认为这是一个权限问题,我相信它无法在该数据库中找到它。