독까의 이야기

ADODB.Connection 오류 '800a0e78'

개체가 닫혀 있으면 작업이 허용되지 않습니다.

/customer/news_view.asp, 줄 19



게시판 리스트는 확인이 되는데 게시글 클릭시 에러 메시지 출력 된다.

DB 커넥션 부분이 문제가 되었다. 

원본 : 

Set db = Server.CreateObject("ADODB.Connection")
db.Open dbcon

수정본 : 

Set db = Server.CreateObject("ADODB.Connection")
db.open "Provider= SQLOLEDB; Data Source=디비 서버 아이피; Initial Catalog=디비명; User id=디비 계정; password=디비 패스워드;"

소스 안에 직접 DB 커넥션 작성한다.

게시글 클릭시 오류 없이 확인 된다.



* 참고 페이지


데이터베이스에 연결하는 방법은 여러 가지가 있습니다. 이 문서에서는 다양한 종류의 데이터베이스와 데이터베이스 연결에 대한 예제 연결 문자열에 대해 단계별로 설명합니다.

요구 사항

다음은 데이터베이스 연결을 위한 요구 사항입니다.
  • MDAC(Microsoft Data Access Components) 버전 2.5 또는 2.6(Jet 데이터베이스 엔진 포함)이 있고 ASP(Active Server Pages)를 사용하는 IIS(인터넷 정보 서비스) 버전 5.0 웹 서버
  • 로컬 또는 원격 데이터베이스로의 연결
  • ASP 사용 Microsoft Internet Explorer 버전 5.0 이상

예제 데이터베이스 연결 문자열

다음 예제는 설명 목적으로만 제공됩니다. 특정 데이터베이스로 연결하려면 이 코드를 작성 중인 ASP 코드에 붙여 넣어야 합니다. 데이터베이스 이름, 서버 이름, 데이터베이스 위치, DSN(데이터 원본 이름) 등의 요소는 해당 정보로 바꿔야 합니다.

Microsoft Access

DSN이 없는 경우
<%
Set Cnn = Server.CreateObject("ADODB.Connection")
Cnn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\mydatabase.mdb"
%>
                                
OLE DB
<%
Set Cnn = Server.CreateObject("ADODB.Connection")
Cnn.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\mydatabase.mdb"
%>
                                
파일 DSN
<% Set Cnn = Server.CreateObject("ADODB.Connection")
Cnn.open "FILEDSN=ADSN"
%>
                                
DSN은 있고 사용자 ID/암호는 없는 경우
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSNname"
%>
                                
DSN과 사용자 ID/암호가 모두 있는 경우
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSNname","username","password"
%>
                                
DSN 없이 실제 경로를 참조로 사용하는 경우
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtest=dsntest & "DBQ=c:\mydatabase.mdb" 
Conn.Open DSNtest
%>
                                
DSN 없이 Server.MapPath를 사용하는 경우

참고: Server.MapPath는 웹 서버 루트의 경로입니다. 기본적으로 이 경로는 C:\Inetpub\Wwwroot입니다.
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtest=dsntest & "DBQ=" & Server.MapPath("/databases/mydatabase.mdb")
Conn.Open DSNtest
%>
                                

Microsoft SQL Server

OLE DB
<%
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.open "PROVIDER=SQLOLEDB;DATA SOURCE=sqlservername;UID=username;PWD=password;DATABASE=mydatabase "
%>
                                
DSN이 있는 경우
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSN=MyDSN;UID=user;PWD=password;DATABASE=mydatabase"
%>
                                
DSN이 없는 경우
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"
Conn.open DSNtest
%>
                                

Microsoft Visual FoxPro

DSN이 없는 경우
<%
Set Conn = Server.CreateObject("ADODB.Connection")
ConnStr= "Driver=Microsoft Visual Foxpro Driver; UID=userID;SourceType=DBC;SourceDB=C:\databases\mydatabase.dbc"
Conn.Open ConnStr
%>
                                

Oracle

DSN이 있는 ODBC
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.cursorlocation=adUseClient   
' requires use of adovbs.inc; numeric value is 3
Conn.open "DSN=test;UID=name;PWD=pass"
%>
                                
OLE DB
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.cursorlocation=adUseClient   
' requires use of adovbs.inc; numeric value is 3
DSNTest="Provider=MSDAORA.1;Password=pass;User ID=name;Data Source=data.world"
Conn.open DSNtest
%>                             



Microsoft VBScript 런타임 오류 오류 '800a0046' 사용 권한이 없습니다.

/어디/무슨.asp 몇번째 줄


이렇게 나오면 해당 소스 뒤진 다음
     Set fso = server.CreateObject("Scripting.FileSystemObject")
     fileName = "DB_CON_LOG_"&date()
     filePath = home_dir2 & "Logs"

빨간 줄 쳐진 부분처럼 파일을 찾아서 해당 폴더에 "쓰기" 권한을 넣어준다.
filepath 의 "Logs" 라는 말은 해당 웹사이트의 디렉토리 중에 Logs 폴더를 말한다.

따라서, 해당 폴더에 IUSR 쓰기 권한 부여하면 사이트 정상으로 열린다.


서버 개체 오류 'ASP 0177 : 800401f3'

Server.CreateObject 실패


소스 확인하면 


Set Jpeg = Server.CreateObject("Persits.Jpeg") 


구글에 검색

Problem Description

When trying to create an instance of a Persits component, the line of code

Set obj = Server.CreateObject("Persits. <ProgID> ")

generates the following error (Windows NT/IIS4)

Server object error 'ASP 0177 : 800401f3' 
Server.CreateObject Failed 
Invalid class string

On Windows 2000/IIS5, the error message is

Server object, ASP 0177 (0x800401F3) 
Invalid ProgID.

Solution

This error means that either the component has not been registered on the server or the ProgID passed to the Server.CreateObject method is misspelled. On Windows 2003 and XP, it may also mean a permission problem on a system registry key.

Make sure the component DLL is present on the server. The exact physical location of the DLL is not important. To register the component on the server, open MS DOS prompt and type

c:\> regsvr32 c:\path\aspupload.dll

(you must use your component's appropriate path and file name).

The correct Persits component ProgID's and file names are listed in the following table:

NameFileProgID
AspEmailaspemail.dll"Persits.MailSender"
AspEncryptaspencrypt.dll"Persits.CryptoManager"
AspGridaspgrid.dll"Persits.Grid"
AspJpegaspjpeg.dll"Persits.Jpeg"
AspUploadaspupload.dll"Persits.Upload"
AspUseraspuser.dll"Persits.AspUser"
XUploadxupload.ocx"Persits.XUpload"
AspPDFasppdf.dll"Persits.PDF"

On Windows 2008, 2003 and XP, this error may also mean the component's ProgID key in the system registry has been assigned insufficient permissions. Run regedt32, open the key HKEY_CLASSES_ROOT\ProgID, select Permissions from the Edit menu, and grant the "Everyone" account Full Control over the key. See the table above for the correct ProgID values.


이렇듯 해당 모듈이 설치가 되어 있지 않아서 나오는 에러이다.

다운로드해서 설치해야 하는데 해당 모듈은 유료 프로그램으로 확인된다.