Ir para conteúdo
Martinsrj

Operação não permitida quando o objeto está fechado

Recommended Posts

Olá pessoal, bom dia!

Tinha uma aplicação funcionando no meu micro normalmente, após a formatação do micro deixou de funcionar.

Agora quando tento logar no sistema da esse erro:

Tipo de erro:

ADODB.Connection (0x800A0E78)

Operação não permitida quando o objeto está fechado.

/wapReembolso/logar.asp, line 17

 

Porem no proprio sql server fiz um teste de consulta incluido a clausula where está funcionando dessa forma conforme a imagem abaixo:

http://uploaddeimagens.com.br/imagem/ver/sqlserver.JPG

Imagem Postada

 

Abaixo segue o meu código:

logar.asp

<%
'-- Retirar do internet explorer o cache!!!
Response.Expiresabsolute = Now() - 2
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
<!--#Include file="conexaopontoweb.asp"-->
<%
Call gpAbreConexao

var_Login = TRIM(Request.Form("txt_login"))
var_Senha = TRIM(Request.Form("txt_senha"))


strSQL = "SELECT * FROM BD_atChamado.dbo.usuarios WHERE login='" & var_Login & "' AND senha='" & var_Senha & "'"
Set rsLogin = session("ObjConn").Execute(strSQL)


If rsLogin.EOF Then
	Response.Write "Login ou Senha inválida!"
	'Response.write "<script>alert('Atenção, login ou senha inválidos!')<script>" 
    Response.AddHeader "Refresh", "1;URL=http://localhost/wapReembolso/wapReembolso/login.asp"
Else
	gpSQL = "SELECT * FROM tbChamado"
	Session("login") = rsLogin("login")
	Session("senha") = rsLogin("senha")
	Session("nome") = rsLogin("nome")
	Session("temAcesso") = 1
	Session("gpSQL") = gpSQL
	
	Response.Redirect "http://localhost/wapReembolso/wapReembolso/index2.asp" 'página restrita
 
	'Response.write var_Login & "<br>"
	'Response.write var_Senha

Call gpFechaConexao()
	
End If
%>

Aqui segue a pagina da conexao com o banco:

<%
Const gpVersaoSistema = "Versão: 1.0"
Const userName_imp="paulo"
Const passWord_imp="alfaω!@#"
Const dataBaseName_imp="BD_atChamado"
Const serverName_imp = "JESUS-2FAB328AB\SQLEXPRESS"


Sub gpAbreConexao()
	Dim strConn
	Set session("ObjConn") = Server.CreateObject("ADODB.Connection")
	strConn = "Provider=SQLOLEDB;Persist Security Info=False;User ID="&userName_imp&";Password="&passWord_imp&";Initial Catalog="&dataBaseName_imp&";Data Source="&serverName_imp
	session("ObjConn").ConnectionString = strConn
	On Error Resume Next
	session("ObjConn").Open 
	session("ObjConn").CommandTimeout=3600
	if Err <> 0 Then
		response.write "<font face=arial size=2 color=#000055>Ocorreu o seguinte Erro ao abrir o BD Ponto Web : </font>" & "<font face=arial size=2 color=#FF0000>" & Err.Description & "</font>"
	ELSE
		'response.write "<font face=arial size=2 color=#000055>conexão efetuado com sucesso : </font>" & "<font face=arial size=2 color=#FF0000>" & Err.Description & "</font>"
	End if
	On Error goto 0
	Session("ConexaoAberta") = "Sim"
End Sub

Sub gpFechaConexao()
    session("ObjConn").close
    Set session("ObjConn") = Nothing 
    session("ObjConn")=""
    Session("ConexaoAberta")="Não"
End sub

%> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique a versão do MDAC,esse erro pode ser causado quando você tenta acessar os valores de um conjunto de registros vazio ou um conjunto de registros que já tenha sido fechado. A causa mais comum, no entanto, parece resultar de chamar um procedimento armazenado que não usa NOCOUNT SET ON.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum, boa tarde!

Tentei instalar essa versão: Microsoft Data Access Components (MDAC) 2.8, mas não consegui instalar dando a seguinte mensagem de erro:

http://uploaddeimagens.com.br/imagem/index/mdac.JPG

Imagem Postada

Cliquei em detalhes da imagem acima e aparece isso:

http://uploaddeimagens.com.br/imagem/ver/detalhemdac.JPG

Imagem Postada

Abaixo eu coloquei sobre o sql server instalado na minha maquina:

Microsoft SQL Server Management Studio Express: 9.00.2047.00

Microsoft Data Access Components (MDAC): 2000.085.1132.00 (xpsp.080413-0852)

Microsoft MSXML: 2.6 3.0 5.0 6.0

Microsoft Internet Explorer: 8.0.6001.18702

Microsoft .NET Framework: 2.0.50727.3603

Operating System: 5.1.2600

 

Abraços.

 

verifique a versão do MDAC,esse erro pode ser causado quando você tenta acessar os valores de um conjunto de registros vazio ou um conjunto de registros que já tenha sido fechado. A causa mais comum, no entanto, parece resultar de chamar um procedimento armazenado que não usa NOCOUNT SET ON.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

desinstala e instala novamente o MDAC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, boa noite!

Desinstalei o SQLServer 2005 e instalei o 2008 e continua dando o mesmo erro.

Abaixo segue o sumario da instalação que fiz do SQL Server 2008:

 

Overall summary:

Final result: Passed

Exit code (Decimal): 0

Exit message: Passed

Start time: 2010-05-09 16:37:16

End time: 2010-05-09 17:01:13

Requested action: Install

 

Machine Properties:

Machine name: JESUS-2FAB328AB

Machine processor count: 1

OS version: Windows XP

OS service pack: Service Pack 3

OS region: United States

OS language: Português (Brasil)

OS architecture: x86

Process architecture: 32 Bit

OS clustered: No

 

Product features discovered:

Product Instance Instance ID Feature Language Edition Version Clustered

 

Package properties:

Description: SQL Server Database Services 2008 R2

ProductName: SQL Server 2008 R2

Type: RTM

Version: 10

SPLevel: 0

Installation location: d:\d7fae86ad07c07bb5bcd96ae6ce251f0\x86\setup\

Installation edition: EXPRESS_ADVANCED

 

User Input Settings:

ACTION: Install

ADDCURRENTUSERASSQLADMIN: True

AGTSVCACCOUNT: AUTORIDADE NT\NETWORK SERVICE

AGTSVCPASSWORD: *****

AGTSVCSTARTUPTYPE: Disabled

ASBACKUPDIR: Backup

ASCOLLATION: Latin1_General_CI_AS

ASCONFIGDIR: Config

ASDATADIR: Data

ASDOMAINGROUP: <empty>

ASLOGDIR: Log

ASPROVIDERMSOLAP: 1

ASSVCACCOUNT: <empty>

ASSVCPASSWORD: *****

ASSVCSTARTUPTYPE: Automatic

ASSYSADMINACCOUNTS: <empty>

ASTEMPDIR: Temp

BROWSERSVCSTARTUPTYPE: Disabled

CONFIGURATIONFILE:

CUSOURCE:

ENABLERANU: True

ENU: True

ERRORREPORTING: False

FARMACCOUNT: <empty>

FARMADMINPORT: 0

FARMPASSWORD: *****

FEATURES: SQLENGINE,REPLICATION,SSMS,SNAC_SDK

FILESTREAMLEVEL: 0

FILESTREAMSHARENAME: <empty>

FTSVCACCOUNT: <empty>

FTSVCPASSWORD: *****

HELP: False

IACCEPTSQLSERVERLICENSETERMS: False

INDICATEPROGRESS: False

INSTALLSHAREDDIR: C:\Arquivos de programas\Microsoft SQL Server\

INSTALLSHAREDWOWDIR: C:\Arquivos de programas\Microsoft SQL Server\

INSTALLSQLDATADIR: <empty>

INSTANCEDIR: C:\Arquivos de programas\Microsoft SQL Server\

INSTANCEID: SQLServer2008

INSTANCENAME: SQLSERVER2008

ISSVCACCOUNT: NT AUTHORITY\NetworkService

ISSVCPASSWORD: *****

ISSVCSTARTUPTYPE: Automatic

NPENABLED: 0

PASSPHRASE: *****

PCUSOURCE:

PID: *****

QUIET: False

QUIETSIMPLE: False

ROLE: AllFeatures_WithDefaults

RSINSTALLMODE: FilesOnlyMode

RSSVCACCOUNT: <empty>

RSSVCPASSWORD: *****

RSSVCSTARTUPTYPE: Automatic

SAPWD: *****

SECURITYMODE: SQL

SQLBACKUPDIR: <empty>

SQLCOLLATION: Latin1_General_CI_AS

SQLSVCACCOUNT: AUTORIDADE NT\SYSTEM

SQLSVCPASSWORD: *****

SQLSVCSTARTUPTYPE: Automatic

SQLSYSADMINACCOUNTS: JESUS-2FAB328AB\Paulo Martins

SQLTEMPDBDIR: <empty>

SQLTEMPDBLOGDIR: <empty>

SQLUSERDBDIR: <empty>

SQLUSERDBLOGDIR: <empty>

SQMREPORTING: True

TCPENABLED: 0

UIMODE: AutoAdvance

X86: False

 

Configuration file: C:\Arquivos de programas\Microsoft SQL Server\100\Setup Bootstrap\Log\20100509_163421\ConfigurationFile.ini

 

Detailed results:

Feature: Database Engine Services

Status: Passed

MSI status: Passed

Configuration status: Passed

 

Feature: SQL Client Connectivity SDK

Status: Passed

MSI status: Passed

Configuration status: Passed

 

Feature: SQL Server Replication

Status: Passed

MSI status: Passed

Configuration status: Passed

 

Feature: Management Tools - Basic

Status: Passed

MSI status: Passed

Configuration status: Passed

 

Rules with failures:

 

Global rules:

 

Scenario specific rules:

 

Rules report file: C:\Arquivos de programas\Microsoft SQL Server\100\Setup Bootstrap\Log\20100509_163421\SystemConfigurationCheck_Report.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já verificou se está perdendo a sessao session("ObjConn") ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou fazer o teste quando chegar em casa. Acredito que o problema pode ser até mesmo o IIS, pois comentei todas as linhas e dei um response.write nas variaveis do campo login e senha, da o mesmo erro.

 

Você já verificou se está perdendo a sessao session("ObjConn") ?

 

Olá Hargon, boa noite!

Coloquei agora a noite as duas paginas no site do pastebin, segue o link da pagina da conexao com o banco:

http://pastebin.com/EQSPkrG3

Abaixo segue verificar a situação do login:

http://pastebin.com/BQ9u2LGJ

 

Obs.: o segundo link está praticamento todo comentado e aparece o mesmo erro:

 

HTTP 500.100 - Servidor interno Erro - erro do ASP

Internet Information Services

 

--------------------------------------------------------------------------------

 

Informações técnicas (para a equipe de suporte)

 

Tipo de erro:

ADODB.Connection (0x800A0E78)

Operação não permitida quando o objeto está fechado.

/wapReembolso/logar.asp, line 17

 

 

Tipo de navegador:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; AskTB5.6)

 

Página:

POST 44 bytes to /wapReembolso/logar.asp

 

POST Data:

txt_login=admin&txt_senha=admin&Submit=Login

 

Hora:

segunda-feira, 10 de maio de 2010, 22:19:40

 

Vejo com isso que o erro não está no SQL Server.

 

Alguem como posso reparar o IIS? :(

Editado por hargon
Adicionado BBCode [QUOTE]

Compartilhar este post


Link para o post
Compartilhar em outros sites

no menu executar digite: reset inetserv, caso não volte, sugiro re-instalar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para testar o código e saber onde encontra-se o erro, faça o seguinte:

 

No arquivo Logar.asp, logo abaixo da linha 10, onde tem:

Call gpAbreConexao

Insira o código:

 

' Verifica se a conexao foi aberta, caso nao, exibe mensagem e finaliza.
If (Session("ConexaoAberta") <> "Sim") or isEmpty(Session("ConexaoAberta")) Then
	Response.Write "Conexao ainda nao foi aberta."
	Response.End()
End If

 

O arquivo conexaopontoweb.asp é o segundo que você postou, correto?

Caso sim, vá até a linha 14 e comente-a ou remova.

Depois execute novamente seu sistema e vê qual erro aparece.

 

Posta ae pra gente dar uma olhada depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alexandre, boa noite!

 

Realizei o procedimento que você mencionou. Segue o código:

conexaopontoweb.asp

<%
'CONEXÃO SQL Server
Const gpVersaoSistema = "Versão: 1.0"
Const userName_imp="paulo"
Const passWord_imp="alfa30"
Const dataBaseName_imp="BD_atChamado"
Const serverName_imp = "JESUS-2FAB328AB"


Sub gpAbreConexao()
	Dim strConn
	Set session("ObjConn") = Server.CreateObject("ADODB.Connection")
	strConn = "Provider=SQLOLEDB;Persist Security Info=False;User ID="&userName_imp&";Password="&passWord_imp&";Initial Catalog="&dataBaseName_imp&";Data Source="&serverName_imp
	'session("ObjConn").ConnectionString = strConn
	' Verifica se a conexao foi aberta, caso nao, exibe mensagem e finaliza.

	If (Session("ConexaoAberta") <> "Sim") or isEmpty(Session("ConexaoAberta")) Then        
		Response.Write "Conexao ainda nao foi aberta."        
		Response.End()
	End If
	
	On Error Resume Next
	session("ObjConn").Open 
	session("ObjConn").CommandTimeout=3600
	if Err <> 0 Then
		response.write "<font face=arial size=2 color=#000055>Ocorreu o seguinte Erro ao abrir o banco de dados : </font>" & "<font face=arial size=2 color=#FF0000>" & Err.Description & "</font>"
	ELSE
		'response.write "<font face=arial size=2 color=#000055>conexão efetuado com sucesso : </font>" & "<font face=arial size=2 color=#FF0000>" & Err.Description & "</font>"
	End if
	On Error goto 0
	Session("ConexaoAberta") = "Sim"
End Sub

Sub gpFechaConexao()
    session("ObjConn").close
    Set session("ObjConn") = Nothing 
    session("ObjConn")=""
    Session("ConexaoAberta")="Não"
End sub

%> 

logar.asp:

<%
'Call gpAbreConexao

var_Login = TRIM(Request.Form("txt_login"))
var_Senha = TRIM(Request.Form("txt_senha"))

Response.Write(var_Login)
Response.Write(var_Senha)
Response.End()


'strSQL = "SELECT * FROM usuarios WHERE login='" & var_Login & "' AND senha='" & var_Senha & "'"
'Set rsLogin = session("ObjConn").Execute(strSQL)
'
'
'If rsLogin.EOF Then
'	Response.Write "Login ou Senha inválida!"
'	'Response.write "<script>alert('Atenção, login ou senha inválidos!')<script>" 
'    Response.AddHeader "Refresh", "1;URL=http://localhost/wapReembolso/wapReembolso/login.asp"
'Else
'	gpSQL = "SELECT * FROM tbChamado"
'	Session("login") = rsLogin("login")
'	Session("senha") = rsLogin("senha")
'	Session("nome") = rsLogin("nome")
'	Session("temAcesso") = 1
'	Session("gpSQL") = gpSQL
'	
'	Response.Redirect "http://localhost/wapReembolso/wapReembolso/index2.asp" 'página restrita
' 
'	'Response.write var_Login & "<br>"
'	'Response.write var_Senha
'
'Call gpFechaConexao()
'	
'End If
%>

Continua dando esse erro:

HTTP 500.100 - Servidor interno Erro - erro do ASP

Internet Information Services

 

--------------------------------------------------------------------------------

 

Informações técnicas (para a equipe de suporte)

 

Tipo de erro:

ADODB.Connection (0x800A0E78)

Operação não permitida quando o objeto está fechado.

/wapReembolso/logar.asp, line 17

 

 

Tipo de navegador:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; AskTB5.6)

 

Acredito que seja o problema so meu IIS, pois no meu trabalho funciona corretamente.

A questão é, como resolver o problema do IIS?

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não nao... você inverteu as explicações, é exatamente o contrario.

 

Os codigos ficarão assim:

 

 

<%
'CONEXÃO SQL Server
Const gpVersaoSistema = "Versão: 1.0"
Const userName_imp="paulo"
Const passWord_imp="alfa30"
Const dataBaseName_imp="BD_atChamado"
Const serverName_imp = "JESUS-2FAB328AB"


Sub gpAbreConexao()
        Dim strConn
        Set session("ObjConn") = Server.CreateObject("ADODB.Connection")
        strConn = "Provider=SQLOLEDB;Persist Security Info=False;User ID="&userName_imp&";Password="&passWord_imp&";Initial Catalog="&dataBaseName_imp&";Data Source="&serverName_imp
        session("ObjConn").ConnectionString = strConn
        'On Error Resume Next
        session("ObjConn").Open 
        session("ObjConn").CommandTimeout=3600
        if Err <> 0 Then
                response.write "<font face=arial size=2 color=#000055>Ocorreu o seguinte Erro ao abrir o banco de dados : </font>" & "<font face=arial size=2 color=#FF0000>" & Err.Description & "</font>"
        ELSE
                'response.write "<font face=arial size=2 color=#000055>conexão efetuado com sucesso : </font>" & "<font face=arial size=2 color=#FF0000>" & Err.Description & "</font>"
        End if
        On Error goto 0
        Session("ConexaoAberta") = "Sim"
End Sub

Sub gpFechaConexao()
    session("ObjConn").close
    Set session("ObjConn") = Nothing 
    session("ObjConn")=""
    Session("ConexaoAberta")="Não"
End sub

%>

 

 

e:

 


<%
Call gpAbreConexao
' Verifica se a conexao foi aberta, caso nao, exibe mensagem e finaliza.
If (Session("ConexaoAberta") <> "Sim") or isEmpty(Session("ConexaoAberta")) Then        
		Response.Write "Conexao ainda nao foi aberta."        
		Response.End()
End If

var_Login = TRIM(Request.Form("txt_login"))
var_Senha = TRIM(Request.Form("txt_senha"))

'Response.Write(var_Login)
'Response.Write(var_Senha)

strSQL = "SELECT * FROM usuarios WHERE login='" & var_Login & "' AND senha='" & var_Senha & "'"
Set rsLogin = session("ObjConn").Execute(strSQL)
'
'
If rsLogin.EOF Then
   	Response.Write "Login ou Senha inválida!"
   	'Response.write "<script>alert('Atenção, login ou senha inválidos!')<script>" 
    Response.AddHeader "Refresh", "1;URL=http://localhost/wapReembolso/wapReembolso/login.asp"
Else
   	gpSQL = "SELECT * FROM tbChamado"
   	Session("login") = rsLogin("login")
   	Session("senha") = rsLogin("senha")
   	Session("nome") = rsLogin("nome")
   	Session("temAcesso") = 1
   	Session("gpSQL") = gpSQL
   	
   	Response.Redirect "http://localhost/wapReembolso/wapReembolso/index2.asp" 'página restrita
 
   	'Response.write var_Login & "
"
   	'Response.write var_Senha

Call gpFechaConexao()
   	
End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae Rafael, vc tem poder de levar defunto heim rsrsrs

 

Esse erro depende de cada code em questão, pois pode ser vários motivos: Sua Conexao, seu Recordset e por vai.

 

Cada situação pode ser diferente da outra, embora a mensagem seja a mesma.

 

Para tirar um pouco de sua dúvida sobre esse erro, de uma pesquisada no Google para ter uma ideia das várias situações:

 

LINK

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae Rafael, você tem poder de levar defunto heim rsrsrs

 

Esse erro depende de cada code em questão, pois pode ser vários motivos: Sua Conexao, seu Recordset e por vai.

 

Cada situação pode ser diferente da outra, embora a mensagem seja a mesma.

 

Para tirar um pouco de sua dúvida sobre esse erro, de uma pesquisada no Google para ter uma ideia das várias situações:

 

LINK

 

vlw

kkkk verdade vou ganhar o trofeu pá de ouro 2014, só desenterrando relíquias, sobre o erro consegui resolver voltei o arquivo de backup do dia anterior e parou o erro. de qualquer maneira obrigado, a proposito terminei o modulo vou dar uma olhada nakele flash que vc tinha dito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser em versões mais antigas do MDAC. Este erro pode ser causado quando você tenta acessar valores de um conjunto de registros vazio ou a partir de um conjunto de registros que já foi fechado. A causa mais comum, no entanto, parece resultar de chamar um procedimento armazenado que não usa SET NOCOUNT ON.

A quase idêntica, mas muito menos comum mensagem:

ADODB.Recordset erro '800a0e79'
A operação não é permitida quando o objeto está aberto.
/<file>.asp, linha <line>

Isso pode ser causado pela tentativa de definir uma propriedade que precisa ser definida antes que o objeto é aberto. Por exemplo, tentar definir a propriedade MaxRecords de um objeto ADODB.Recordset depois de abrir o conjunto de registros:

<%
set rs = CreateObject ("ADODB.Recordset")
rs.Open "Selecionar Colunas de nometabela", conn
rs.maxRecords = 5
%>

Para corrigir, o código deve ser:

<%
set rs = CreateObject ("ADODB.Recordset")
rs.maxRecords = 5
rs.Open "Selecionar Colunas de nometabela", conn
%>

Você também pode obter 800a0e78 erros do provedor, sem informação muito mais útil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!!! Estou com um problema no SQL Server 2012, porém o erro ao fazer uma tarefa é diferente: Operação não permitida quando o objeto está aberto. Alguém pode me ajudar? Já reiniciei o Serviço , porém o erro persiste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.