SQLの窓

2013年02月20日


SQLExpress 内に存在する表の CREATE 文を取得する

SQL-DMO を使って VBScript で簡単に取得する事ができます。但し、SQL-DMO は最新の環境からは削除されています。
SQL Server データベース管理オブジェクト (SQL-DMO) は、SQL Server 2008 R2 Express および SQL Server 2008 R2 Feature Pack から削除されました
ですが、個別にインストールしてサポートできるようになっています。
Microsoft SQL Server 2005 の旧バージョンとの互換性コンポーネントSQL Server 下位互換パッケージには、最新バージョンの DTS (データ変換サービス) 2000 ランタイム、SQL 分散管理オブジェクト (SQL-DMO)、意思決定支援オブジェクト (DSO)、SQL 仮想デバイス インターフェイス (SQLVDI) が含まれています。これらのバージョンは SQL Server 2005 および SQL Server 2008 との互換性を維持するために更新されたもので、SQL Server 2000 Service Pack 4 (SP4) と SQL Server 2005 SP2 で配布されたすべての修正が含まれています。

対象: カスタマー、パートナー、開発者

X86 パッケージ (SQLServer2005_BC.msi)
X64 パッケージ (SQLServer2005_BC.msi)
IA64 パッケージ (SQLServer2005_BC.msi)
インストール時の選択 インストールするとすぐ利用可能になるので、以下のスクリプトを利用可能です。
' **********************************************************
' 変数定義
' **********************************************************
Dim Server : Server = "サーバ"
Dim Db : Db = "データベース"
Dim User : User = "sa"
Dim Pass : Pass = "パスワード"
Dim ListTable : ListTable = "TR_出席,TR_成績2,TR_成績3"
Dim List : List = Split( ListTable, "," )

Dim objServer,objDatabase,objTable,Fso,TargetFile

Set Fso = CreateObject( "Scripting.FileSystemObject" )

' **********************************************************
' オブジェクト作成
' **********************************************************
on error resume next
Set objServer = CreateObject("SQLDMO.SQLServer")
if Err.Number <> 0 then
	Wscript.Echo "SQL-DMO はインストールされていません"
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 接続
' **********************************************************
on error resume next
Call objServer.Connect( Server, User, Pass )
if Err.Number <> 0 then
	Wscript.Echo "接続に失敗しました [" & Err.Description & "]"
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' データーベースオブジェクト取得
' **********************************************************
on error resume next
Set objDatabase = objServer.Databases(Db)
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' テーブルオブジェクト
' **********************************************************
Set TargetFile = Fso.OpenTextFile( "定義ファイル.sql", 2, True )
on error resume next
For i = 0 to Ubound( List )
	Set objTable = objDatabase.Tables(List(i))
	if Err.Number <> 0 then
		Wscript.Echo Err.Description
		Wscript.Quit
	end if

	' 定義を一つ出力
	TargetFile.WriteLine objTable.Script()
Next
on error goto 0
TargetFile.Close()

' **********************************************************
' 切断
' **********************************************************
Call objServer.DisConnect()


CREATE 文は システムが出力しているので、作成した時と違った厳密な記述がされているので注意して下さい。

作成時

CREATE TABLE TR_成績3 (
	コード int,
	行1 varchar (20),
	行2 varchar (20),
	行3 varchar (20),
	行4 varchar (20),
	行5 varchar (20),
	行6 varchar (20),
	行7 varchar (20),
	行8 varchar (20),
	備考 varchar (1024),
	PRIMARY KEY (コード)
)
システムからの出力
CREATE TABLE [TR_成績3] (
	[コード] [int] NOT NULL ,
	[行1] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[行2] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[行3] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[行4] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[行5] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[行6] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[行7] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[行8] [varchar] (20) COLLATE Japanese_CI_AS NULL ,
	[備考] [varchar] (1024) COLLATE Japanese_CI_AS NULL ,
	 PRIMARY KEY  CLUSTERED 
	(
		[コード]
	)  ON [PRIMARY] 
) ON [PRIMARY]
GO
タグ:SQL VBScript
【SQLExpressの最新記事】
posted by lightbox at 2013-02-20 15:00 | SQLExpress | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり