每个表中的列名必须唯一。表'CONSUMO.DBO.ARCHIVOBOL082017'中的列名'MntNeto'被多次指定

时间:2019-01-31 20:02:59

标签: sql sql-server

我需要创建一列:'MntNeto',其默认值为'0','Not Null' 仅当它在表CONSUMO.DBO.ARCHIVOBOL082017中不存在

在Sql Server查询分析器中,此字符串每次都运行良好:

if not exists (select * from syscolumns where id=object_id('CONSUMO.DBO.ARCHIVOBOL082017') and name='MntNeto') alter table CONSUMO.DBO.ARCHIVOBOL082017 add MntNeto money default 0 not null

request.cookies(“ usa_bd”)值是表的名称,在这种情况下为:CONSUMO.DBO.ARCHIVOBOL082017

<%
set conn=server.createobject("adodb.connection")
 '********************************************
 'CONNECTION STRING **************************
%>
<!--#include file="xxxxx.asp"-->
<%
 '********************************************
 '********************************************
conn.open vamos

sqlstring = " if not exists (select * from syscolumns " &_
            " where id=object_id('" & trim(ucase(request.cookies("usa_bd"))) & "') and name='MntNeto') " &_
            " alter table " & trim(ucase(request.cookies("usa_bd"))) & " add MntNeto money default 0 not null"
            response.write sqlstring & "<br><br>"
Set RS = Conn.Execute(sqlstring)

conn.close
set conn = nothing
%>

仅当asp不存在时才从asp创建该列。 如果确实出现此错误:

每个表中的列名必须唯一。表“ CONSUMO.DBO.ARCHIVOBOL082017”中的列名“ MntNeto”被多次指定。

但是,从Sql Query分析器中,它每次都能正常运行。

1 个答案:

答案 0 :(得分:0)

我知道这可能发生的唯一方法是,如果你在你点NET应用程序连接不指向CONSUMO数据库作为其初始目录。因此它的咨询syscolumns表中错误的数据库。

如果将查询窗口的连接更改为其他数据库,则会在SSMS中收到相同的错误。至少我知道。