簡體   English   中英

遷移問題:ASP經典應用程序中的錯誤“ 80040e14”從Windows Server 2003 / SQL Server 2000遷移到Windows Server 2008 R2 / SQL Server 2012

[英]Migration Issue: error '80040e14' in ASP classic application from Windows server 2003/SQL Server 2000 to Windows Server 2008 R2/SQL Server 2012

首先,我想讓您知道我不是工程師,我只是一個在工作限制內工作的網頁設計師。 我們有一堆以ASP classic制作的應用程序,它們在Windows Server 2003 / SQL 2000環境中運行。 該公司購買了帶有Windows Server 2008R2和SQL 2012的新服務器,他們為我提供了將應用程序遷移到新服務器的任務。 我閱讀並閱讀了許多有關此問題的手冊和文檔,為期數周,除其中一個應用程序外,我完成了我的任務。 該應用程序可生成並創建界面並回答調查。 這很奇怪,因為登錄頁面有效:您輸入用戶名並通過,然后進入管理區域,存儲在數據庫中的選項顯示沒有問題,但是當我嘗試輸入調查問卷回答瀏覽器時,這個:

Microsoft OLE DB提供程序的ODBC驅動程序錯誤'80040e14'

[Microsoft] [ODBC SQL Server驅動程序] [SQL Server]'@ errno'附近的語法不正確。

/SEL/Encuesta/preguntatodo_nuevo.asp,利納(Línea)108

好吧,這是我在lnea的/SEL/Encuesta/preguntatodo_nuevo.asp中找到的東西:

sSQL = "Update UsuariosClima set NumCuestContestados = NumCuestContestados+1 Where IDUsuario = " & IDUsuario
conn.Execute(sSQL)

我知道很難僅憑這些信息來幫助我,所以如果您需要更多數據,請告訴我。 我不希望您去做我的工作,如果有人可以帶領我朝正確的方向前進,我將自己繼續。 非常非常感謝你。

請記住:我不是一個egineer,像我小時候向我解釋。

更新-UsuariosClima中的觸發器:

tD_Usuarios:

ALTER trigger tD_Usuarios on dbo.UsuariosClima for DELETE as

begin
declare  @errno   int,
       @errmsg  varchar(255)

if exists (
  select * from deleted,AccesoCuestionarioClima
  where

    AccesoCuestionarioClima.IDUsuario = deleted.IDUsuario
)
begin
  select @errno  = 30001,
         @errmsg = 'Cannot DELETE "Usuarios" because "AccesoCuestionario" exists.'
  goto error
end

if exists (
  select * from deleted,AccesoClienteClima
  where

    AccesoClienteClima.IDUsuario = deleted.IDUsuario
)
begin
  select @errno  = 30001,
         @errmsg = 'Cannot DELETE "Usuarios" because "AccesoCliente" exists.'
  goto error
end

if exists (
  select * from deleted,PertenenciaClima
  where

    PertenenciaClima.IDUsuario = deleted.IDUsuario
)
begin
  select @errno  = 30001,
         @errmsg = 'Cannot DELETE "Usuarios" because "Pertenencia" exists.'
  goto error
end

update RespuestaCuestionariosClima
  set

    RespuestaCuestionariosClima.IDUsuario = NULL
  from RespuestaCuestionariosClima,deleted
  where

    RespuestaCuestionariosClima.IDUsuario = deleted.IDUsuario

return
error:
raiserror @errno @errmsg
rollback transaction
end

tU_Usuarios:

ALTER trigger tU_Usuarios on dbo.UsuariosClima for UPDATE as
begin
  declare  @numrows int,
       @nullcnt int,
       @validcnt int,
       @insIDUsuario int,
       @errno   int,
       @errmsg  varchar(255)
  select @numrows = @@rowcount

  if

    update(IDUsuario)
  begin
    if exists (
      select * from deleted,AccesoCuestionarioClima
      where

    AccesoCuestionarioClima.IDUsuario = deleted.IDUsuario
)
begin
  select @errno  = 30005,
         @errmsg = 'Cannot UPDATE "UsuariosClima" because "AccesoCuestionarioClima" exists.'
  goto error
end
  end

  if

update(IDUsuario)
  begin
if exists (
  select * from deleted,AccesoClienteClima
  where

    AccesoClienteClima.IDUsuario = deleted.IDUsuario
)
begin
  select @errno  = 30005,
         @errmsg = 'Cannot UPDATE "UsuariosClima" because "AccesoClienteClima" exists.'
  goto error
end
  end

  if

update(IDUsuario)
  begin
if exists (
  select * from deleted,PertenenciaClima
  where

    PertenenciaClima.IDUsuario = deleted.IDUsuario
)
begin
  select @errno  = 30005,
         @errmsg = 'Cannot UPDATE "UsuariosClima" because "PertenenciaClima" exists.'
  goto error
end
  end

  if

update(IDUsuario)
  begin
update RespuestaCuestionariosClima
  set

    RespuestaCuestionariosClima.IDUsuario = NULL
  from RespuestaCuestionariosClima,deleted
  where

    RespuestaCuestionariosClima.IDUsuario = deleted.IDUsuario
end

return
error:
raiserror @errno @errmsg
rollback transaction
end

乍一看,我相信您描述的第一個錯誤可能只是在tU_Usarios觸發器中對raiserror的調用中的語法錯誤。 我相信這在上面的“第108行”中被反映為錯誤,因為更新是導致該錯誤的原因,但是調用RAISERROR的代碼將問題回溯到原始語句。 當更新發生時,觸發器將觸發,捕獲的觸發器代碼中發生錯誤,但是當控制權傳遞給調用RAISERROR的代碼時,語法錯誤出現在“ @errno”。

我認為需要在逗號分隔的列表中提供RAISERROR的參數,並將其包含在括號中,等等。並且我相信參數的最小數量為三個-消息ID或字符串,其后是嚴重性代碼,然后是狀態代碼。 通常,最后兩個值最終分別為16和1。

我把答案放在這里以使其更明顯。 謝謝。

由於它們都將遷移到SQL Server 2012,因此應將兩個觸發器(更新和刪除)都從RAISERROR更改為THROW。為此,他應將行(在兩者中)更改為THROW @errno,@ errmsg,2; –鬼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM