2011-02-01 2 views
1

MS Access 프런트 엔드에서 SQL Server의 테이블에 연결 중입니다. Access에서 연결된 테이블을 만들 때 가져 오려는 SQL Server의 테이블에 대한 열 설명이 있습니다. 프로그래밍 방식으로 열 설명을 가져 오는 방법이 있습니까? MS Access의 SQL Server 연결 테이블에서 열 설명 검색

(나는 연결된 테이블에 설명을 추가하는 방법을 알고, 난 그냥 백 엔드의 설명에서 얻는 도움이 필요합니다.)

답변

1

과 같이하십시오 : 아주 좋은

DECLARE @TableName varchar(100) 
SELECT @TableName = 'yourtablename' 


-- This will determine if we're using version 9 (2005) of SQL Server, and execute code accordingly 

IF CAST(REPLACE(SUBSTRING(CAST(SERVERPROPERTY('productversion') as varchar),1,2), '.','') as int) >= 9 
BEGIN 
     -- This is a SQL 2005 machine 
     SELECT 
      [Table Name] = OBJECT_NAME(c.object_id), 
      [Column Name] = c.name, 
      [Description] = ex.value 
     FROM 
      sys.columns c 
     LEFT OUTER JOIN 
      sys.extended_properties ex 
     ON 
      ex.major_id = c.object_id 
      AND ex.minor_id = c.column_id 
      AND ex.name = 'MS_Description' 
     WHERE 
      OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0 
      AND OBJECT_NAME(c.object_id) = @TableName 
     ORDER 
      BY OBJECT_NAME(c.object_id), c.column_id 
END 
ELSE 
BEGIN 
     -- assume this is a SQL 2000 
     SELECT 
      [Table Name] = i_s.TABLE_NAME, 
      [Column Name] = i_s.COLUMN_NAME, 
      [Description] = s.value 
     FROM 
      INFORMATION_SCHEMA.COLUMNS i_s 
     LEFT OUTER JOIN 
      sysproperties s 
     ON 
      s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME) 
      AND s.smallid = i_s.ORDINAL_POSITION 
      AND s.name = 'MS_Description' 
     WHERE 
      OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0 
      AND i_s.TABLE_NAME = @TableName 
     ORDER BY 
      i_s.TABLE_NAME, i_s.ORDINAL_POSITION 
END 
+0

합니다. 나는 특히 2005 + 대 이전 버전에 대한 올바른 속성 테이블을 자동으로 전환하는 조건부를 좋아합니다. – mwolfe02

+0

빠른 버그 수정. SQL Server 2008에서는 버전 확인이 실패합니다 ('productversion == 10 ...'). 첫 번째 문자를 가져오고 있기 때문에 버전 번호는 1입니다. T-SQL은 장점이 아니지만 SQL Server 2000과 SQL Server 2008에서 다음과 같은 업데이트 된 행을 사용할 수 있습니다. 'IF CAST (IF CAST (SUBSTRING (CAST (SERVERPROPERTY ('productversion') as varchar), 1,2), '.', '') int)> = 9' 내 방식보다 나은 접근법이있을 수 있습니다. – mwolfe02

+0

-1 - http://robkennedy.com/2007/09/20/retrieving-column-descriptions-from-ms-sql/에서 정확한 복사 및 붙여 넣기. – JNK

관련 문제