2010년 11월 28일 일요일

2010년 11월 27일 토요일

Microsoft.ACE.OLEDB.12.0 공급자는 로컬 컴퓨터에 등록할 수 없습니다.(System.Data)

SQL Server 2008 에서,
작성된 엑셀 파일을 통해서 데이터 가져오기를 할때 다음과 같은 메시지가 나올수 있습니다.



위와 같은 메시지는, 작성된 엑셀 포맷을 기존에 설치된 드라이버에서 인식할수 없거나 파싱시 오류가 발생할때 입니다.

엑셀 버젼에 따라 다르겠지만,.
새로운 오피스 데이터 드라이버를 다운로드 받아서 설치를 해주면 됩니다.

다운로드: 2007 Office system 드라이버: 데이터 연결 구성 요소
http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=ko


26-mssql-import-excel.png

2010년 11월 16일 화요일

MSSQLSERVER / ID: 18053

오류: 17300, 심각도: 16, 상태: 1. (매개 변수: ). 서식 지정 중에 오류가 발생했으므로 오류는 간단하게 표시되며 추적, ETW, 알림 등은 생략됩니다.

2010년 11월 12일 금요일

Log Parser, Output format not specified - using NAT output format

Log Parser 로 IIS 로그 분석이 다음과 같은 오류가 발생하는 경우,.

WARNING: Output format not specified - using NAT output format.
Task completed with parse errors.

-e -10 같은 파라미터를 추가로 줘서 오류 내역을 추적을 해봐야 합니다.
그러면,. 특정 Row 파싱시에 오류가 나는 것을 확인할수 있습니다.

Parse errors:
Log row terminates unexpectedly
  LogFile "H:\LOG_FILES\WWW\W3SVC176439766\ex101111.log", Row number 17024

위 해당 로그를 확인해 보면,.
다음과 같이 문자열중 깨져 보이는 부분 있는데요. 인코딩 문제 입니다.

GET /product/xx-2.jpg - 80 - Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.0;+
EmbeddedWB+14.52+from:+http://www.bsalsa.com/+EmbeddedWB+14.52;+SLCC1;+
.NET+CLR+2.0.50727;+.NET+CLR+3.0.30618;+.NET+CLR+3.5.30729) http://xxxxxxxx/
product/product_view.htm?d=p&l=read&f_code=c&f_c=35&f_p=&f_num=2194&
f_se_pri=&f_se_pro=&f_page=1&n=&n2=?붿??몃???xxx.xxx.co.kr 200 0 0 8395 525 15

물론,. Input Format Parameters 에서, iCodepage 를 줘서 인코딩을 변경할수 있지만, 그렇게 하면 다른 문자열이 깨질수 있습니다.  Log Parser 는 기본값으로 인코딩을 자동 인식 합니다.

그외 COM 오브젝트를 이용하는 경우에는,.
다음과 같은 메시지가 나올수 있습니다.

Error executing query: Error while opening file "D:\WWW_ROOT\xxxxx\리포트.htm": 액세스가 거부되었습니다. [액세스가 거부되었습니다.]

Office SharePoint Server / ID: 5783

공유 서비스 공급자 'SharedServices1'의 동기화가 실패했습니다. 작업이 다시 시도됩니다.

이유: 사용자 ''이(가) 로그인하지 못했습니다. 이 사용자는 트러스트된 SQL Server 연결과 관련되어 있지 않습니다.

기술 지원 정보:
System.Data.SqlClient.SqlException: 사용자 ''이(가) 로그인하지 못했습니다. 이 사용자는 트러스트된 SQL Server 연결과 관련되어 있지 않습니다.
위치: System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
위치: System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
위치: System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
위치: System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
위치: System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
위치: System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
위치: System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
위치: System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
위치: System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
위치: System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
위치: System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
위치: System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
위치: System.Data.SqlClient.SqlConnection.Open()
위치: Microsoft.Office.Server.Data.SqlSession.OpenConnection()
위치: Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)
위치: Microsoft.Office.Server.Data.SqlDatabaseManager.HasAccess(String user)
위치: Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeConfigurationDatabaseAccess(SharedComponentSecurity security)
위치: Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeAccessControl(SharedComponentSecurity sharedApplicationSecurity)
위치: Microsoft.Office.Server.Administration.SharedResourceProvider.Microsoft.Office.Server.Administration.ISharedComponent.Synchronize()
위치: Microsoft.Office.Server.Administration.SharedResourceProviderJob.Execute(Guid targetInstanceId)

자세한 정보는 http://go.microsoft.com/fwlink/events.asp에 있는 도움말 및 지원 센터를 참조하십시오.

2010년 11월 4일 목요일

IIS 7, ServerManager Site State 오류 0x800710D8

IIS 7에서 제공되는 Microsoft.Web.Administration 닷넷 라이브러리를 이용하여 사이트 정보를 가져올 경우, 사이트 인스턴스의 상태값을 가져올때 다음과 같은 오류가 발생합니다.

처리되지 않은 예외: System.Runtime.InteropServices.COMException (0x800710D8): 개체 식별자가 올바른개체를 나타내지 않습니다. (예외가 발생한 HRESULT: 0x800710D8)
   위치: Microsoft.Web.Administration.Interop.IAppHostProperty.get_Value()
   위치: Microsoft.Web.Administration.ConfigurationElement.GetPropertyValue(IAppHostProperty property)
   위치: Microsoft.Web.Administration.Site.get_State()

위와 같은 오류는, 다음과 같은 코드를 사용할때에 발생합니다.

using (ServerManager mgr = new ServerManager())
{               
    foreach (Site s in mgr.Sites)
    {
       if (s.State == ObjectState.Started){ }

처럼 모든 사이트에 대해서 리스트팅을 할때에, 없는 값을 가져올려고 하기 때문입니다. IIS 7의 경우 Ftp 와, Web 의 구분이 없습니다.

하지만, Ftp 사이트만 생성한 경우에는 State 값이 없습니다.
State 값은 Web 사이트에서만 제공되는 값입니다. 이유는 모르겠습니다.....

foreach (Binding b in site.Bindings)
{
    if (b.Protocol.Equals("http", StringComparison.OrdinalIgnoreCase))
    { }

그래서, Bindings 에서 Protocol 에서 Http 프로토콜이 있는 경우에만  State 값을 호출해야 오류가 나지 않게 됩니다.  ( --> 이 부분 같은 경우, Microsoft.Web.Administration 라이브러리에서 알아서 처리를 해줘야 하는데... -_-;;)


2010년 11월 3일 수요일

IIS 7, 처리기 사용 권한 accessPolicy (AccessFlags)

IIS 5/6 에서는 사이트 수준 또는 특정 경로 수준에서의 "실행 권한" 설정이 가능합니다. 주로 실행 권한이 필요없는 업로드 자료실 같은 경우 입니다.

Metabase 에서는 AccessFlags Property 입니다.

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/e9b6d626-9583-4d59-b7f7-a079ec47461c.mspx

기본값은 "스크립트" 로 513 입니다.
읽기만 설정할 경우 1 입니다.  그외 설정값도 있으나 일반적으로 쓸일이 없습니다.

IIS 7 에서는, AccessFlags 대신에 accessPolicy 로 변경 되었습니다. 이 값은 설정 할 경우 각 웹사이트 또는 특정 경로의 web.config 의 system.webServer 의 handlers 노드의 속성값으로 지정이 됩니다.

http://www.iis.net/ConfigReference/system.webServer/handlers

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers accessPolicy="Read" />
    </system.webServer>
</configuration>


위 설정은 위 처럼 특정 위치에 web.config 파일을 만들어서 넣거나, 또는 특정 경로에서 "처리기 매핑" 의 "기능 사용 권한 편집" 을 통해서 전체 설정 또는 특정 모듈 단위로 적용이 가능합니다. 물론 appcmd 로도 가능합니다.



03-handlers_howto_48-small.png

volsnap / ID: 24

H: 볼륨의 디스크 영역이 충분하지 않아서 H:의 섀도 복사본에 대해 섀도 복사본 저장소를 증가시킬 수 없습니다. 이 오류로 인해 H: 볼륨의 모든 섀도 복사본이 삭제될 수도 있습니다.

volsnap / ID: 36

사용자가 지정한 제한 때문에 섀도 복사본 저장소를 증가시킬 수 없으므로, C: 볼륨의 섀도 복사본이 중단되었습니다.

IIS 7.5 ADSI, DirectoryEntry 0x80005000 Exception

DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");
foreach (DirectoryEntry webSite in root.Children){}

위와 같이 ADSI 공급자를 이용하여 IIS 메타베이스에 접근할려고 하는 경우, 다음과 같은 예외가 발생할수 있습니다.

처리되지 않은 예외: System.Runtime.InteropServices.COMException (0x80005000): 알 수 없는 오류입니다(0x80005000).
   위치: System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   위치: System.DirectoryServices.DirectoryEntry.Bind()
   위치: System.DirectoryServices.DirectoryEntry.get_IsContainer()
   위치: System.DirectoryServices.DirectoryEntries.ChildEnumerator..ctor(DirectoryEntry container)
   위치: System.DirectoryServices.DirectoryEntries.GetEnumerator()

IIS 7.5 에서, 위와 같은 오류의 경우 ADSI 공급자가 설치 되어 있지 않기 때문 입니다. 기본값으로 설치가 되지 않습니다. IIS 7.5 에서는 Microsoft.Web.Administration 또는 ServerManager 를 권장 합니다.

ADSI 를 이용할려면 롤에서 IIS 6 관리 호환성에서 IIS 6 메타베이스 호환성 등의 역할 서비스를 설치해야 합니다.

2019년 10월 MS 취약점 패치 주요 사항

CVE-2019-1166 | Windows NTLM 변조 취약성 https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-1166 CVE-2019-1230 | Hype...