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 回答