我需要创建一列:'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分析器中,它每次都能正常运行。
答案 0 :(得分:0)
我知道这可能发生的唯一方法是,如果你在你点NET应用程序连接不指向CONSUMO
数据库作为其初始目录。因此它的咨询syscolumns
表中错误的数据库。
如果将查询窗口的连接更改为其他数据库,则会在SSMS中收到相同的错误。至少我知道。