我在存储过程中遗漏了哪些访问权限

时间:2009-07-16 19:54:03

标签: sql sql-server-2005 stored-procedures coldfusion

我正在尝试从我的网站运行一个禁用触发器的存储过程。以下是触发器的代码:

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.

3 个答案:

答案 0 :(得分:3)

DBAccountName是否具有TableName的权限?这些可以与整体模式(dbo)分开授予或撤销。

我不是dba,但DBAccountName是否允许执行DDL语句? (所以它可以通过编程方式执行禁用触发器等操作)

答案 1 :(得分:0)

它因为您连接到错误的db目录(假设是SQL Server)。您已连接到数据库但已连接到“默认”目录,这可能是“主”

我认为你可以在程序的开头加上一些东西,如:

使用DBName;

这会将您连接到正确的目录。

答案 2 :(得分:0)

您可能必须指定数据库。我不认为这是一个权限问题,我相信它无法在该数据库中找到它。