0

我有一个使用 ODBC 驱动程序的 SQL 链接服务器。如果我已经知道要查看的表的名称,我可以像这样检索它:

select * from GPData..root.TableName

问题是我知道查看所有可用表的唯一方法是打开 Microsoft Access 并表现得就像我要创建一个链接表一样,在此过程中它会列出表供我选择。

有没有办法可以直接从 SSMS 列出表格?如果没有,我该如何以编程方式进行(最好在 C# 中)?必须有某种方式,因为 Access 显然能够做到这一点。

4

1 回答 1

1

这是我在 C# 中的做法。我创建了一个带有两个文本框的表单。DSNTextBox 采用 ODBC DSN 的名称,OutputFileText 采用您要放置生成的 sql 文件的目录,其中包含为找到的每个表创建视图的命令。

运行 sql 文件后,我可以通过视图访问表,就好像它们是我自己的数据库的一部分一样。这样我可以在编写查询时浏览表名,而不必事先知道表的名称。

    OdbcConnection con = new OdbcConnection();
    con.ConnectionString = "DSN=" + DSNTextBox.Text;
    con.Open();

    DataTable schema = con.GetSchema("tables");

    foreach (DataRow r in schema.Rows)
    {
        var name = r["TABLE_NAME"];
        sqlLines.Add("create view " + name + " as select * from " + DSNTextBox.Text + "..root." + name);
        sqlLines.Add("go");
    }
    con.Close();

    if(OutputFileTextBox.Text.Substring(OutputFileTextBox.Text.Length - 1, 1) != "\\") 
        OutputFileTextBox.Text += "\\";

    File.WriteAllLines(OutputFileTextBox.Text + DSNTextBox.Text + ".sql" , sqlLines.ToArray());
于 2012-04-23T03:09:50.910 回答