0

サーバーに接続してデータベースのスキーマ/メタデータ全体を取得し、別の開発環境でデータベースのスキーマを更新するために使用できるスクリプトに生成する vb.net プログラムを作成しようとしています。これはすべて、Visual Studio (.net) で行う必要があります。

私は解決策を高低で探してきましたが、私の問題を解決するものは何も見つかりませんでした.

私が得た最も近いものは、vb ファイルで次のコードを使用し、コマンド プロンプトから VBC を使用して、xml ファイルを作成する .exe を生成することでした。.vb ファイルは、以下の SQL クエリに依存します。この SQL クエリは、テーブル、列、および各列のデータ型のみを取得します。データベースのインスタンス全体のスキーマを取得しようとしています。

SELECT t.name AS TableName, SCHEMA_NAME(t.schema_id) AS SchemaName, c.name AS ColumnName, tp.name as DataType 
FROM sys.tables AS t 
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
INNER JOIN sys.types tp ON c.system_type_id =  tp.system_type_id ORDER BY TableName

他に何をすればよいのか、新しいことを見つけるためにどこを探せばよいのかわかりません。私が読んだことはすべて、とりわけ GetSchema vb クラスを使用してテーブルスキーマを取得するか、SQL サーバー管理スタジオを介してデータベーススキーマスクリプトを生成することです。

ヘルプと建設的な意見をいただければ幸いです

4

1 に答える 1

0

次のリソースを使用してコードを記述しました

** サーバーとデータベースに接続し、スキーマを取得してコンソールに書き込む

http://technet.microsoft.com/en-us/library/ms205738.aspx

** テキストファイルに書き込む

http://msdn.microsoft.com/en-us/library/6ka1wd3w.aspx

ファイルを.sqlとして保存することになりました

スキーマを取得する実際のコードは次のとおりで、最初のリンクの下にあります。

For Each tb In db.Tables
    smoObjects = New Urn(0) {}
    smoObjects(0) = tb.Urn
    If tb.IsSystemObject = False Then
        Dim sc As StringCollection
        sc = scrp.Script(smoObjects)
        Dim st As String
        For Each st In sc
            Console.WriteLine(st)
        Next
    End If
Next

次のインポートで

Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Sdk.Sfc
Imports System.Data.SqlClient
Imports System.Collections.Specialized
Imports System.Text
Imports System.IO
于 2013-09-17T19:06:17.403 に答える