2011-06-13 5 views
0

SQlConnection을 사용하는 프로그래밍 방식 쿼리와 OSQL을 통해 명령을 실행할 때 SQL Server 2005 동작 간의 미세한 차이점을 알고있는 사람이 있습니까?osql 및 sqlcommand를 사용할 때의 SQLServer 2005 동작 차이

OSQL을 사용할 수있는 원격 컴퓨터에 데이터베이스가있는 클라이언트가 있습니다. 그러나 sqlconnection/sqlcommand를 빌드하여 비슷한 쿼리를 시도 할 때;

osql -S myHost\SQLEXPRESS -U sa -q "USE [TempDB] select [Endpoint] from [Service]" 

이 작동하지 않는 오류가 위에서 생성됩니다

여기

['A network-related or instance-specific error occurred while establishing a connection to the SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that the SQL Server is configured to allow remote connections (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specific).

가 작동 OSQL 명령입니다 : 나는 오류가 나타납니다. 두 경우 모두

SqlConnectionStringBuilder cnBldr = new SqlConnectionStringBuilder(); 

cnBldr.UserID = "sa"; 
cnBldr.Password = "PASSWORD"; 
cnBldr.DataSource = "myHost\\SQLEXPRESS"; 
cnBldr.InitialCatalog = "TempDB"; 
using (SqlConnection cn = new SqlConnection(cnBldr.ConnectionString)) 

using (SqlCommand cmd = new SqlCommand("select [Endpoint] from [Service]",cn)) 
{ 
    cn.Open(); 
    SqlDataReader rdr = cmd.ExecuteReader(); 
    rdr.Read(); 
} 

, 나는 (동일한 사용자로 실행하고 예 : 나는 Windows 사용자로 로그인 I 중 하나는 cmd를 창을 열고 OSQL 명령을 실행하거나 내가 코드를 포함하는 Windows 응용 프로그램을 실행 OSQL이 작동하면 코드 조각이 위의 오류를 생성합니다. 두 경우 모두 'sa'계정을 사용하여 데이터베이스에 액세스합니다. 사용자 입력을 묻는 메시지가 나타납니다.

약간의 차이가 있습니까? 이 동작을 특성 수있는 두 가지?이 자유롭게 전환 할 수있는 osql 명령 (어떤 작동합니다) 및 응용 프로그램을 실행하는 사이에 전환 할 수있는 연결 수에 문제가 인해 믿지 않아요. (오류 메시지를 생성 함).

아무쪼록 고맙습니다. TempDB를 사용하지 않는

+0

동일한 기계를 사용하셨습니까? – gbn

답변

2

먼저 요한 복음

는 이름 tempdb이며 코드는 대소 문자를 구분 인스턴스에서 휴식 것입니다.

연결 문제에 대해서는 SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified의 단계를 수행하십시오. OSQL은 ODBC를 사용하며 SQLCommand에는 관리되는 SNI 구현이 내장되어 있으므로 차이점이 있으며 서로 다른 컴퓨터 전역 구성 설정이 적용됩니다. 연결된 문서의 단계에 따라 연결이 끊어지는 위치를 확인합니다.

+0

안녕하세요, 저는 두 기계에서 동일한 기계를 사용하고있었습니다. TempDB는 실제 데이터베이스의 이름을 제거하기위한 단순한 주석이었습니다. 혼란을 드려 죄송합니다; 나는 그것을 fooDB라고 불렀어야했다. –

+0

더 많은 sqlcmd (osql)를 사용하면 동일한 동작이 관찰됩니다 (예 : sqlcmd -S myHost \ SQLExpress -U sa -q "USE [tempDB] select [Endpoint] from"또한 " 적절한 출력. –

+0

응용 프로그램에서 서버에 오류가 추가되어 연결하려고합니까? ERRORLOG? 파일을 확인하거나 EventVwr.exe를 사용하십시오. –

0

두 메커니즘 간에는 차이점이 없습니다. 응용 프로그램이 약간 다르게 시작되었습니다. 이 차이 (특히 쿼리 생성 전에 이름 확인)가 오류 메시지를 유발 한 원인이었습니다.

이 관점에서 볼 때 osql/sqlcmd와 프로그래밍 방식 쿼리에는 고유 한 차이점이 없습니다.

관련 문제