1

我正在连接到 SQL Server 2008 数据库。

使用 C#,我想创建一个由我指定的名称的新表,它看起来与该数据库中的现有表完全一样。不涉及外键。

我有类似的代码

DataTable table = con.GetSchema("Tables");
foreach (System.Data.DataRow row in table.Rows)
{
    foreach (System.Data.DataColumn col in table.Columns)

但这并没有让我走得很远。我真的需要自己遍历所有表吗?即使我确定了DataTable如何克隆它?我看了看,DataTable.Clone但看不到如何设置新名称并在数据库上创建该表。

4

1 回答 1

1

SMO(服务器管理对象)具有大量的表脚本功能。我会从那里开始。

本文可能会帮助您入门。

如果你想避免 SMO,你可以通过 SQLDataReader 来完成,如下(或类似的东西):

using (SqlConnection cnn = new SqlConnection(connectionString))
{
    using (SqlCommand cmd = cnn.CreateCommand())
    {
       cmd.CommandText = "Execute some SQL Select here. Doesn't matter what. We just need a reference to the table.";
       cmd.CommandType = CommandType.Text;
       cnn.Open();
       using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.KeyInfo))
       {
          schema = rdr.GetSchemaTable();
       }
    cnn.Close();
    }
}
于 2012-10-22T16:09:51.163 回答