Ccmmutty logo
Commutty IT
5 min read

【SQL Server】論理名を設定するコマンドを生成

https://cdn.magicode.io/media/notebox/5b4bbceb-677e-4860-ae3f-e04d5fd89e5e.jpeg

はじめに

 『A5:SQL』などのツールを使ってお手軽にテーブル設計書などを出力していると、論理名が付いていないテーブルやカラムがチョコチョコみつかりますよね。(ゴメンね・・・)
 ところが、あまり使わないので毎回論理名の付け方を忘れてしまいます。
 そこで論理名を設定するコマンドを出力してくれるコードを個人用としてここに記述します。
 Magicode ってこんな使い方が出来るんですね。画期的。

使い方

 大体コメントの通りです。
  1. db_schema に スキーマ名を記述します。
  2. 出力したい分だけ table_info を増やします。
  3. 出力されたコマンドをクエリとして実行!
  4. トラブルは自己責任で対処してください!大事!
python
# --------------------------------------------------
#  論理名設定コマンド 出力プログラム
# --------------------------------------------------

# パラメータクラス
#   ・ tableName     -- テーブル名
#   ・ column_name   -- カラム名(テーブルの場合は無視される)
#   ・ logical_name  -- 論理名
#   ・ fanc          -- 処理 ( 追加:add / 修正:update / 削除:drop )
#   ・ is_table      -- テーブルフラグ ( True / False )
class ParamData:
    def __init__(self, table_name, column_name, logical_name, fanc, is_table):
        self.tableName = table_name
        self.logicalName = logical_name
        self.columnName = column_name
        self.fanc = fanc
        self.isTable = is_table

# 1.使用するスキーマ名を記述してください
db_schema = "dbo"

# 2.編集して好きなだけ増やしてください
table_info = []
table_info.append(ParamData("t_test01", "    ", "テーブルマスタ", "add", True))
table_info.append(ParamData("t_test01", "name", "テーブル名", "add", False))
#table_info.append(ParamData("t_test01", "name", "テーブル名", "update", False)) # 更新 例
#table_info.append(ParamData("t_test01", "name", "テーブル名", "drop", False)) # 削除 例

print("")
for param in table_info:
  if(param.isTable):
    if(param.fanc == "drop"):      
      print("-- "+param.tableName+""" の 論理名を削除
  EXEC sys.sp_"""+param.fanc+"""extendedproperty @name=N'MS_Description'
                                , @level0type=N'SCHEMA'
                                , @level0name=N'"""+db_schema+"""'
                                , @level1type=N'TABLE'
                                , @level1name=N'"""+param.tableName+"""'
                                """)
    else:
      print("-- "+param.tableName+" に 論理名:"+param.logicalName+""" を設定
  EXEC sys.sp_"""+param.fanc+"""extendedproperty @name=N'MS_Description'
                                , @value=N'"""+param.logicalName+"""'
                                , @level0type=N'SCHEMA'
                                , @level0name=N'"""+db_schema+"""'
                                , @level1type=N'TABLE'
                                , @level1name=N'"""+param.tableName+"""'
                                """)      
  else:
    if(param.fanc == "drop"): 
      print("-- "+param.tableName+"."+param.columnName+""" の 論理名を削除
  EXEC sys.sp_"""+param.fanc+"""extendedproperty @name=N'MS_Description'
                                , @level0type=N'SCHEMA'
                                , @level0name=N'"""+db_schema+"""'
                                , @level1type=N'TABLE'
                                , @level1name=N'"""+param.tableName+"""'
                                , @level2type=N'COLUMN'
                                , @level2name=N'"""+param.columnName+"""'
                                """)
    else:
      print("-- "+param.tableName+"."+param.columnName+" に 論理名:"+param.logicalName+""" を設定
  EXEC sys.sp_"""+param.fanc+"""extendedproperty @name=N'MS_Description'
                                , @value=N'"""+param.logicalName+"""'
                                , @level0type=N'SCHEMA'
                                , @level0name=N'"""+db_schema+"""'
                                , @level1type=N'TABLE'
                                , @level1name=N'"""+param.tableName+"""'
                                , @level2type=N'COLUMN'
                                , @level2name=N'"""+param.columnName+"""'
                                """)

Discussion

コメントにはログインが必要です。