2010-02-15 7 views
1

특정 테이블 내의 열 세부 정보를 반환하는 저장 프로 시저 쿼리가 있습니다. SQL 서버 관리 스튜디오에서 sp를 실행하면 결과가 반환됩니다. 문제는 C# 코드에서 쿼리를 실행하려고 할 때입니다. 던져진 예외는 없으며 데이터베이스의 프로 시저를 실행하기 위해 관련성있는 권한이 부여되지만 결과는 코드로 반환되지 않습니다. 엔터프라이즈 응용 프로그램 블록 버전 3.1을 사용하고 있습니다. 테이블 열 이름 쿼리가 호출 코드에 결과를 반환하지 않습니다.

내 쿼리입니다

SELECT SysObjects.[Name] as TableName, 
      SysColumns.[Name] as ColumnName, 
      SysTypes.[Name] As DataType, 
      SysColumns.[Length] As Length 
    FROM SysObjects INNER JOIN SysColumns ON SysObjects.[Id] = SysColumns.[Id] 
    INNER JOIN SysTypes ON SysTypes.[xtype] = SysColumns.[xtype] 
    WHERE SysObjects.[type] = 'U' 
     AND SysObjects.[Name] = 'MyTableName' 
    ORDER BY SysObjects.[Name] 

C#을 호출하는 코드

using (DbCommand dbCommand = db.GetStoredProcCommand("StoredProcedureName")) 
{ 
    DataSet data = new DataSet(); 

    db.LoadDataSet(dbCommand, data, "MyTableName"); 
    if (data.Tables.Count > 0 && data.Tables[0].Rows.Count > 0) 
    { 
     // Do stuff with the returned data 
    } 
} 
+2

은 당신이 당신의 SQL 문 호출하는 C#을 -code을 제공 할 수있다 :

대신 이걸 사용하는 거라고? –

+0

SQL이 작동하면 문제는 C# 프로그램 –

+0

Enterprise 라이브러리 데이터 액세스 응용 프로그램 블록 (버전 3.1과 같음)을 사용하는 경우 해당 데이터를 포함하도록 질문을 업데이트하고 태그를 지정해야합니다. –

답변

0

나는 C#을 문제에 대한 모르겠지만, 당신이 제공 한 데이터 추상화 계층을 사용하도록 쿼리를 변경하는 것을 고려한다 Microsoft. SYSOBJECTS 참조의 사용은 SQL 버전간에 동일하지 않을 수도 있습니다.

-- 
-- for a specific tables columns 
-- 
select * 
from INFORMATION_SCHEMA.COLUMNS 

-- 
-- For all the user tables in the current database.. 
-- 
select * 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME='MyTableName' 
관련 문제