我正在尝试创建一个程序,它将生成一个 SQL 数据库模式,包括表、视图、键、索引、触发器等......比如:
CREATE TABLE TableName(....) ....
CREATE VIEW ViewName(...) ....
我知道这是可能的,因为 SQL Server Management Studio 可以做到(生成脚本命令)。然而,它是如何做到的呢?
更新:我忘了提及权限:我是数据库的所有者(在大多数情况下),但我不是系统管理员。会有什么不同吗?
我正在尝试创建一个程序,它将生成一个 SQL 数据库模式,包括表、视图、键、索引、触发器等......比如:
CREATE TABLE TableName(....) ....
CREATE VIEW ViewName(...) ....
我知道这是可能的,因为 SQL Server Management Studio 可以做到(生成脚本命令)。然而,它是如何做到的呢?
更新:我忘了提及权限:我是数据库的所有者(在大多数情况下),但我不是系统管理员。会有什么不同吗?
对于表格列表:
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"]);
}
数据库结构的查询因 sql server 版本而异。
2008 R2 页面在此处,它链接到TABLES页面,该页面链接到sys.tables页面,该页面链接到sys.objects页面。
sys.objects 页面有相关示例。这只会给你桌子。列、触发器、视图等还有其他系统对象...
如果您真正的意思是生成,您可能想研究实体框架/代码优先方法,这将基本上为您提升您的数据库(表等)。