2014-01-22 51 views
3

我試圖UNPIVOT mdsb.sys.database表中的某些列,但有一些列的問題。我嘗試在將UNPIVOTing表格中的所有列CAST到CTE中的NVARCHAR(128),但它仍然無效。有人可以解釋爲什麼以及如何解決問題?不透明列時出現類型轉換錯誤,爲什麼?

; 
WITH props AS (
SELECT 
    [name] 
    ,CAST([collation_name] AS NVARCHAR(128)) AS [collation_name] 
    ,CAST([is_auto_close_on] AS NVARCHAR(128)) AS [is_auto_close_on] 
    ,CAST([is_auto_shrink_on] AS NVARCHAR(128)) AS [is_auto_shrink_on] 
    ,CAST([is_auto_create_stats_on] AS NVARCHAR(128)) AS [is_auto_create_stats_on] 
    ,CAST([is_auto_update_stats_async_on] AS NVARCHAR(128)) AS [is_auto_update_stats_async_on] 
    ,CAST([is_auto_update_stats_on] AS NVARCHAR(128)) AS [is_auto_update_stats_on] 
    ,CAST(CASE WHEN [is_parameterization_forced] = 0 THEN N'SIMPLE' ELSE N'FORCED' END AS NVARCHAR(128)) AS [is_parameterization_forced] 
    ,CAST([is_trustworthy_on] AS NVARCHAR(128)) AS [is_trustworthy_on] 
    ,CAST([compatibility_level] AS NVARCHAR(128)) AS [compatibility_level] 
    ,CAST([page_verify_option_desc] AS NVARCHAR(128)) AS [page_verify_option_desc] 
FROM sys.databases s 
WHERE [name] = DB_NAME() 
) 
SELECT [name] 
     ,[property] 
     ,[value] 
FROM [props] 
UNPIVOT 
(
    [value] 
    FOR [property] IN ([collation_name] 
         ,[is_auto_close_on] 
         ,[is_auto_shrink_on] 
         ,[is_auto_create_stats_on] 
         ,[is_auto_update_stats_async_on] 
         ,[is_auto_update_stats_on] 
         ,[is_parameterization_forced] 
         ,[is_trustworthy_on] 
         ,[compatibility_level] 
         ,[page_verify_option_desc] 
         ) 
) AS u 

錯誤:

Msg 8167, Level 16, State 1, Line 34 
The type of column "page_verify_option_desc" conflicts with the type of other columns specified in the UNPIVOT list. 

結果應該是這個樣子,但與 「page_verify_option_desc」 行 「recovery_model_desc」。

name property value 
master collation_name SQL_Latin1_General_CP1_CI_AS 
master is_auto_close_on 0 
master is_auto_shrink_on 0 
master is_auto_create_stats_on 1 
master is_auto_update_stats_async_on 0 
master is_auto_update_stats_on 1 
master is_parameterization_forced SIMPLE 
master is_trustworthy_on 0 
master compatibility_level 110 

回答

2

我認爲它實際上是一個整理問題

嘗試這樣

; 
WITH props AS (
SELECT 
    [name] 
    ,CAST([collation_name] AS NVARCHAR(128)) AS [collation_name] 
    ,CAST([is_auto_close_on] AS NVARCHAR(128)) AS [is_auto_close_on] 
    ,CAST([is_auto_shrink_on] AS NVARCHAR(128)) AS [is_auto_shrink_on] 
    ,CAST([is_auto_create_stats_on] AS NVARCHAR(128)) AS [is_auto_create_stats_on] 
    ,CAST([is_auto_update_stats_async_on] AS NVARCHAR(128)) AS [is_auto_update_stats_async_on] 
    ,CAST([is_auto_update_stats_on] AS NVARCHAR(128)) AS [is_auto_update_stats_on] 
    ,CAST(CASE WHEN [is_parameterization_forced] = 0 THEN N'SIMPLE' ELSE N'FORCED' END AS NVARCHAR(128)) AS [is_parameterization_forced] 
    ,CAST([is_trustworthy_on] AS NVARCHAR(128)) AS [is_trustworthy_on] 
    ,CAST([compatibility_level] AS NVARCHAR(128)) AS [compatibility_level] 
    ,CAST([page_verify_option_desc] collate database_default AS NVARCHAR(128)) AS [page_verify_option_desc] 
FROM sys.databases s 
WHERE [name] = DB_NAME() 
) 
SELECT [name] 
     ,[property] 
     ,[value] 
FROM [props] 
UNPIVOT 
(
    [value] 
    FOR [property] IN ([collation_name] 
         ,[is_auto_close_on] 
         ,[is_auto_shrink_on] 
         ,[is_auto_create_stats_on] 
         ,[is_auto_update_stats_async_on] 
         ,[is_auto_update_stats_on] 
         ,[is_parameterization_forced] 
         ,[is_trustworthy_on] 
         ,[compatibility_level] 
         ,[page_verify_option_desc] 
         ) 
) AS u 
+0

它接縫像我不能做的逆轉置鑄造。必須事先做好。 –

+1

哦,你嘗試整理database_default –

+1

@VigneshKumar - 是的工作。必須是排序規則問題。 –

相關問題