2016-11-17 4 views
0

私は、すべてのデータがNULLの未使用のフィールドとカラムがたくさんある不良な大規模なデータベースで作業しています。クエリを使用してテーブルに移入された列のみを取得する方法はありますか?私はSQL Serverのメーカーへのアクセス何を持っていませんが、PHPPHPのMS SQL Serverで未使用の列を検索するクエリ

+0

[OK]を返された私がなぜ...頼むようになりましたか?これらの列をすべて見つけたら、次のステップになるでしょうか? – scsimon

+0

私は新しいシステムで作るすべてのトランザクションでそれらを無視することができます –

+0

PHPであなたを助けることはできませんが、SSMSは無料でダウンロードできますFYSA – scsimon

答えて

0

を経由していることからSelect * From INFORMATION_SCHEMA.COLUMNS

でかいま見を取り、あなたはすべての値が

Declare @SQL varchar(max) = '>>>' 
Select @[email protected]+'Union All Select TableName=''['+Table_Schema+'].['+Table_Name+']'',FieldName='''+Column_Name+''' From ['+Table_Schema+'].['+Table_Name+'] having max(['+Column_Name+']) is null'+char(13) 
    From INFORMATION_SCHEMA.COLUMNS 

Set @SQL = Replace(@SQL,'>>>Union All','') 
Exec(@SQL) 
nullのテーブル名やフィールド名を一覧表示するには、いくつかの動的SQLを作成することができます

私は@scsimonを追加する必要がありますが、有効な懸念/質問

私は列全体がnullだったテーブルを持っていなかったを持っているので、私は3枚のレコードと3つのフィールドでdbo.temp作成しました。フィールドaaaのみが完全にnullです。

上記の動的SQLが

TableName  FieldName 
[dbo].[temp] aaa 

一つのライン

Declare @SQL varchar(max) = '>>>';Select @[email protected]+'Union All Select TableName=''['+Table_Schema+'].['+Table_Name+']'',FieldName='''+Column_Name+''' From ['+Table_Schema+'].['+Table_Name+'] having max(['+Column_Name+']) is null'+char(13) From INFORMATION_SCHEMA.COLUMNS;Set @SQL = Replace(@SQL,'>>>Union All','');Exec(@SQL); 
+0

PHPで実行できるクエリですか? –

関連する問題