我正在尝试编写一个连接到服务器并获取数据库的整个架构/元数据的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 Server管理工作室生成数据库模式脚本。
任何帮助和建设性的意见将不胜感激
答案 0 :(得分: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