sql - 每个表中的列名必须是唯一的。表“CONSUMO.DBO.ARCHIVOBOL082017”中的列名“MntNeto”被指定多次
问题描述
我需要创建列:'MntNeto',默认值为 '0','Not Null' 仅当它在表 CONSUMO.DBO.ARCHIVOBOL082017 中不存在时
在 Sql Server Query Analizer 中,这个字符串每次都能正常工作:
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 中创建列。如果是这样,我会收到此错误:
每个表中的列名必须是唯一的。表“CONSUMO.DBO.ARCHIVOBOL082017”中的列名“MntNeto”被指定了多次。
但是,从 Sql Query 分析器中,它每次都可以正常工作。
解决方案
我知道这可能发生的唯一方法是,如果您在 dot net 应用程序中的连接没有指向CONSUMO
数据库作为其初始目录。因此它正在查询syscolumns
错误数据库中的表。
如果您将查询窗口的连接更改为不同的数据库,您将在 SSMS 中收到相同的错误。至少,我愿意。
推荐阅读
- android - 正在使用适合长时间运行的网络调用的 WorkManager
- react-native - 使用 redux 获取数据对我不起作用,initialState 不会改变
- tensorflow - 列出 TFLite 模型的操作
- c# - 语法 Function.Build().Run();
- r - 如何使用base R在小提琴图中添加数字平均值
- docusignapi - DocuSign API - 创建文档 - 如何启用文档中 HTML 内容的链接?
- javascript - 从 url 中删除查询参数
- c++ - 在 boost::asio 中自定义套接字/关闭系统调用
- java - 如何在给定坐标数组的情况下合并两个矩形?
- javascript - 通过单击一个复选框,应禁用其他复选框