2

我正在尝试创建一个程序,它将生成一个 SQL 数据库模式,包括表、视图、键、索引、触发器等......比如:

CREATE TABLE TableName(....) ....
CREATE VIEW ViewName(...) ....

我知道这是可能的,因为 SQL Server Management Studio 可以做到(生成脚本命令)。然而,它是如何做到的呢?

更新:我忘了提及权限:我是数据库的所有者(在大多数情况下),但我不是系统管理员。会有什么不同吗?

4

4 回答 4

3

如果您只针对 SQL Server,SMO非常强大。这是 SQL Server Management Studio 使用的库,包含将数据库对象转换为脚本的类。

此处的脚本示例是一个很好的起点。

于 2012-10-21T13:46:39.000 回答
1

对于表格列表:

foreach (DataRow row in schemaTbl.Rows)
{
listBox.Items.Add(row["TABLE_NAME"]);
}

对于特定表中的列

object[] objArrRestrict;
objArrRestrict = new object[] {null, null, "Customers", null};
DataTable schemaCols;
schemaCols = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, objArrRestrict);
//List the schema info for the selected table
foreach (DataRow row in schemaCols.Rows)
{
listBox.Items.Add(row["COLUMN_NAME"]);
}
于 2012-10-21T13:37:23.223 回答
1

数据库结构的查询因 sql server 版本而异。

2008 R2 页面在此处,它链接到TABLES页面,该页面链接到sys.tables页面,该页面链接到sys.objects页面。

sys.objects 页面有相关示例。这只会给你桌子。列、触发器、视图等还有其他系统对象...

于 2012-10-21T13:41:27.587 回答
1

如果您真正的意思是生成,您可能想研究实体框架/代码优先方法,这将基本上为您提升您的数据库(表等)。

于 2012-10-21T13:45:44.383 回答