2010-02-16 1 views
4

SQL Server 관리 개체 (SMO)를 사용하여 열 길이를 가져옵니다 :내가 SMO 사용하여 CRUD 저장 발동 등 내가 테이블의 열을 통해 반복하고</p> <p>를 생성하는 T4 템플릿을 쓰고 있어요

For Each column As Column In table.Columns 
    WriteLine("@" & column.Name & " " & column.DataType.Name & ", ") 
Next 

을 내 질문은 단순히 어떻게 varchar 열의 길이를 찾을 수 있습니까? 열에 Length/MaxLength 등의 등록 정보가없는 것 같습니다. 그래서

int maxLen = column.DataType.MaximumLength; 
int maxPrecision = column.DataType.NumericPrecision; 
int numericScale = column.DataType.NumericScale; 

과 : 나는 참조

답변

11

으로 http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.column_members.aspx을 사용하고

Column 유형은 당신이 찾고있는 정보의 이러한 비트를 포함 DataType라는 속성이 있습니다. 모든 유형이 모든 유형에 대해 채워지지는 않지만 분명히 VARCHAR의 숫자 스케일은 이해할 수 없습니다 ....

MSDN docs on precision, scale and max length을 확인하십시오. 주요 문장은 다음과 같습니다.

정밀도는 숫자의 자릿수입니다. 배율은 숫자의 소수점 오른쪽에있는 숫자 입니다. 예를 들어, 숫자 123.45 5의 정밀도 및 2

의 규모 그래서 DECIMAL(12,4)정밀도를 갖고 보유 4 소수점 후 그중 12 자리 (전체)의합니다 (눈금은) 따라서 소수점 앞에 8 자리가 있습니다.

하지만 원하는 필드가 있어야합니다. 맞습니까?

+0

예 완벽하게 작동합니다, 감사 – DannykPowell

3

시도 :

column.Properties["Length"].Value 
+0

이 작동하는 것을 확인했다. 감사 –

0

당신은 모든 필드 속성을 얻기 위해 다음 코드를 사용할 수 있습니다

<#= propertyType #> 
<#=col.DataType.MaximumLength#> 
<#=col.Nullable?"?":""#> 
관련 문제