SQL Serverのスキーマから簡易テーブル設計書を作成するSQL
SQL Serverのスキーマから簡易テーブル設計書を作成するSQLです。
Management Studioで出力対象のDBに対して下記SQLを発行してください。
あとは、クエリ結果をExcelにでもコピペして加筆、整形してください。
SELECT C.TABLE_NAME AS TableName, C.ORDINAL_POSITION AS OrdinalPosition, CASE WHEN T1.COLUMN_NAME IS NULL THEN 0 ELSE 1 END AS IsPK, C.COLUMN_NAME AS ColumnName, C.DATA_TYPE AS DataType, CASE C.CHARACTER_MAXIMUM_LENGTH WHEN -1 THEN 'MAX' WHEN NULL THEN '' ELSE ISNULL(CONVERT(VARCHAR(10), C.CHARACTER_MAXIMUM_LENGTH), '') END AS MaximumLength, CASE WHEN C.IS_NULLABLE = 'NO' THEN 0 ELSE 1 END AS IsNullable, COLUMNPROPERTY(OBJECT_ID(QUOTENAME(C.TABLE_SCHEMA) + '.' + QUOTENAME(C.TABLE_NAME)), C.COLUMN_NAME, 'IsIdentity') AS IsIdentity, ISNULL(C.COLUMN_DEFAULT, '') AS ColumnDefault FROM INFORMATION_SCHEMA.COLUMNS AS C LEFT OUTER JOIN( SELECT K.TABLE_NAME, K.COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS T ON K.TABLE_NAME = T.TABLE_NAME AND K.CONSTRAINT_NAME = T.CONSTRAINT_NAME WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' ) AS T1 ON C.TABLE_NAME = T1.TABLE_NAME AND C.COLUMN_NAME = T1.COLUMN_NAME ORDER BY C.TABLE_NAME, C.ORDINAL_POSITION
(2010/04/29 修正)
もっと細かい情報を出力したい場合は上記SQLと同じような感じで、各種ビュー(下記URL参照)の情報をゴニョゴニョすれば抽出できます。
http://msdn.microsoft.com/ja-jp/library/ms186778.aspx