과 같이하십시오 : 아주 좋은
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
합니다. 나는 특히 2005 + 대 이전 버전에 대한 올바른 속성 테이블을 자동으로 전환하는 조건부를 좋아합니다. – mwolfe02
빠른 버그 수정. 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
-1 - http://robkennedy.com/2007/09/20/retrieving-column-descriptions-from-ms-sql/에서 정확한 복사 및 붙여 넣기. – JNK