Sql server Coldfusion“找不到对象”错误,但可以在代码的其他部分中找到
在下面的代码中,截断表的查询抛出错误: 执行数据库查询时出错。[Macromedia][SQLServer JDBC Driver][SQLServer]找不到对象temp_person,因为它不存在或您没有权限 但是如果我将其注释掉,那么当我插入到表中时,相同的数据源/表组合不会抛出错误。如果我在SSMS中手动截断该表,然后运行该进程,那么数据拷贝会很好。但如果我再运行一次,我显然会被骗 为什么CF在试图截断表时找不到它,但在插入时却可以找到 代码: 从评论中 如果它是一个永久表,并且从SSMS工作,那么它可能是一个权限问题。您是否在SSMS和CF数据源下使用相同的帐户?如果没有,请验证CF数据源帐户是否具有截断该表的权限。还要检查CF数据源设置是否有任何限制。请参阅允许的SQL操作部分Sql server Coldfusion“找不到对象”错误,但可以在代码的其他部分中找到,sql-server,coldfusion,Sql Server,Coldfusion,在下面的代码中,截断表的查询抛出错误: 执行数据库查询时出错。[Macromedia][SQLServer JDBC Driver][SQLServer]找不到对象temp_person,因为它不存在或您没有权限 但是如果我将其注释掉,那么当我插入到表中时,相同的数据源/表组合不会抛出错误。如果我在SSMS中手动截断该表,然后运行该进程,那么数据拷贝会很好。但如果我再运行一次,我显然会被骗 为什么CF在试图截断表时找不到它,但在插入时却可以找到 代码: 从评论中 如果它是一个永久表,并且从SSM
根据错误消息,听起来帐户或DSN设置没有该对象的截断权限。是临时表还是永久表?只是确认一下,您是否对两个cfquery?Permanent使用相同的DSN。相同的DSN数据源。实际上,我在dev服务器上创建了一个名为temp_person的表来测试这个过程。最终,数据将从prod.person传递到dev.person。还有我需要复制的所有其他表…那可能是权限问题。您是否对SSM和CF DSN使用相同的帐户?如果没有,DSN帐户是否有权截断该表,CF DSN设置是否允许截断?现在有一个好问题。用于服务器的物理计算机最近已更改,数据已迁移到新服务器。也许我有插入权限,但没有截断权限?我会让系统管理员调查一下。是的。我以管理员身份登录到SSMS,CF数据源以用户身份登录。
<cffunction name="copyProdToDev">
<cfargument name="devDatasource" >
<cfargument name="prodDataSource" type="string">
<cfargument name="devTableName" type="string">
<cfargument name="prodTableName" type="string">
<cfargument name="dateColumnName" default="none">
<cfargument name="startDate" default=Now()>
<h1>In function</h1>
<cfquery name="ProdData" datasource="#prodDatasource#" timeout="60">
SELECT *
FROM #prodTableName#
<cfif dateColumn neq "none">
WHERE #dateColumn# > <cfqueryparam cfsqltype="cf_sql_date" value="#startDate#">
</cfif>
</cfquery>
<cfset columnNames = ProdData.getColumnNames()>
<cfset numColumns = ArrayLen(columnNames)>
<cfdump var="#columnNames#">
<cfdump var="#devTableName#" abort="false">
<cfquery datasource="#devDatasource#" timeout="60">
TRUNCATE TABLE #devTableName#
</cfquery>
<cfloop query="#ProdData#">
<cfquery datasource="#devDatasource#" timeout="60">
INSERT INTO #devTableName# VALUES
(
<cfloop index="colNumber" from="1" to="#ArrayLen(columnNames)-1#">
<cfset columnData = "#ProdData[columnNames[colNumber]][currentrow]#">
<cfqueryparam cfsqltype="cf_sql_varchar" value="#columnData#">,
</cfloop>
<cfset columnData = "#ProdData[columnNames[numColumns]][currentrow]#">
<cfqueryparam cfsqltype="cf_sql_varchar" value="#columnData#">
)
</cfquery>
(
<cfloop index="colNumber" from="1" to="#ArrayLen(columnNames)-1#">
<cfset columnData = "#ProdData[columnNames[colNumber]][currentrow]#">
<cfoutput>#columnData#, </cfoutput>
</cfloop>
<cfset columnData = "#ProdData[columnNames[numColumns]][currentrow]#">
<cfoutput>#columnData#</cfoutput>
)<br />
</cfloop>
</cffunction>