2009年12月24日木曜日

groovyとSQL Serverでオブジェクトが参照しているオブジェクトを一覧表示する

groovyとSQL Serverでオブジェクトが参照しているオブジェクトを一覧表示するには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=test1",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

objname = "dbo.comp_dept"
query = """
select referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name
from sys.dm_sql_referenced_entities(${objname},'OBJECT')
group by referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name
"""
// オブジェクトが参照しているオブジェクトの一覧
// (ビューが参照しているテーブルなど)
sql.eachRow(query){
// 参照先サーバ
println("referenced_server_name:${it.referenced_server_name}")
// 参照先DB
println("referenced_database_name:${it.referenced_database_name}")
// 参照先スキーマ
println("referenced_schema_name:${it.referenced_schema_name}")
// 参照先エンティティ
println("referenced_entity_name:${it.referenced_entity_name}")
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
sys.dm_sql_referenced_entities (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/bb677185.aspx

0 件のコメント:

コメントを投稿