Sql 获取数据库模式并以vb.net编程方式生成脚本

Sql 获取数据库模式并以vb.net编程方式生成脚本,sql,xml,vb.net,database-schema,Sql,Xml,Vb.net,Database Schema,我正在尝试编写一个vb.net程序,该程序连接到服务器,获取数据库的整个模式/元数据,然后将其生成一个脚本,该脚本可用于在不同的开发环境中更新数据库的模式。所有这些都必须通过Visual studio(.net)完成 我一直在到处寻找解决方案,但我没有找到任何能解决我问题的方法 我得到的最接近的结果是在vb文件中使用以下代码,并通过命令提示符使用VBC生成创建xml文件的.exe。.vb文件取决于下面的SQL查询。这个SQL查询只检索每个列的表、列和数据类型,我试图获取整个数据库实例的模式 SE

我正在尝试编写一个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类检索表模式,要么就是通过SQLServerManagementStudio生成数据库模式脚本


任何帮助和建设性的意见都将不胜感激

我使用了以下资源来编写代码

**连接到服务器和数据库,并在控制台中获取架构和写入

**写入文本文件

最后我将文件保存为.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