標籤:des style blog color os 使用 io for 檔案
團隊合作設計一套系統資料模型,建立了PDM後,Table、View、Store Procedure等都建立好了,且建立了多個Schema方便管理這些資料庫物件,但Table、view、Column等對象有Comment時(用來在團隊不同成員間共用描述資訊)
產生資料庫時會得到一個提示"不支援擴充屬性,或對象不存在",分析發現異常在類似以下語句:
if exists(select 1 from sys.extended_properties p where p.major_id = object_id(‘Environment.Resource‘) and p.minor_id = (select c.column_id from sys.columns c where c.object_id = p.major_id and c.name = ‘ResourceCode‘))begin execute sp_dropextendedproperty ‘MS_Description‘, ‘user‘, ‘Environment‘, ‘table‘, ‘Resource‘, ‘column‘, ‘ResourceCode‘endexecute sp_addextendedproperty ‘MS_Description‘, ‘資源編碼‘, ‘user‘, ‘Environment‘, ‘table‘, ‘Resource‘, ‘column‘, ‘ResourceCode‘go
分析原因,發現是由於採用了Schema(上述代碼中的Environment),所以sp_addextendedproperty預存程序的第三個參數就應該是SCHEMA而不是user。查詢相關資料發現以上SQL語句是基於Powerdesigner內建的對應的.xdb檔案產生的,如是Column注釋資訊的SQL代碼模板,對應的xdb模板檔案存放在powerdesigner安裝路徑的Sybase\PowerDesigner 16\Resource Files\DBMS\sqlsv2012.xdb
如,每個Column的Comment資訊均通過以上代碼模板產生,所以只需要修改代碼模板(將sp_addextendedproperty的第三個參數值由user修改為schema即可)即可讓所有對象的Comment產生語句得到修正。
註:在win7以上系統中需要使用管理員權限運行powerdesigner才能將修改後的模板檔案儲存。
PowerDesigner 16.5對SQL Server 2012 產生資料庫時"不支援擴充屬性"問題