Sql-Server

如何從視圖中解密列的名稱?

  • June 21, 2022

我不得不處理第三方數據庫,我試圖讓所有列在視圖中使用,但我對它們進行了加密,

例如:我沒有得到為什麼?int``NUMERO_SALARIE``TNumSal

DECLARE @TableViewName NVARCHAR(128)
SET @TableViewName=N'DP_SALARIE'
SELECT b.name AS ColumnName, c.name AS DataType, b.max_length AS Length
FROM sys.all_objects a
INNER JOIN sys.all_columns b
ON a.object_id=b.object_id
INNER JOIN sys.types c
ON b.user_type_id=c.user_type_id
WHERE a.Name=@TableViewName
AND a.type IN ('U','V')

在此處輸入圖像描述

有什麼辦法可以解密它們嗎?

對我來說看起來像是使用者定義的數據類型。

通過查看sys.types和連接列system_type_id並進一步定義system_type_id應該等於user_type_id查詢應該給你底層的系統類型名稱。

所以你的程式碼應該是這樣的

DECLARE @TableViewName NVARCHAR(128)
SET @TableViewName=N'DP_SALARIE'
SELECT b.name AS ColumnName, c.name AS DataType, b.max_length AS Length
FROM sys.all_objects a
INNER JOIN sys.all_columns b
ON a.object_id=b.object_id
INNER JOIN sys.types c
ON b.system_type_id=c.system_type_id
WHERE a.Name=@TableViewName
AND a.type IN ('U','V')
AND c.system_type_id = c.user_type_id

引用自:https://dba.stackexchange.com/questions/313596