Sql server 2008 使用odbc驱动程序从链接服务器检索表列表
我有一个SQL中的链接服务器,它使用ODBC驱动程序。如果我已经知道要查看的表的名称,我可以这样检索它:Sql server 2008 使用odbc驱动程序从链接服务器检索表列表,sql-server-2008,odbc,linked-server,Sql Server 2008,Odbc,Linked Server,我有一个SQL中的链接服务器,它使用ODBC驱动程序。如果我已经知道要查看的表的名称,我可以这样检索它: select * from GPData..root.TableName 问题是,我知道查看所有可用表的唯一方法是打开Microsoft Access,就像我要创建一个链接表一样,在此过程中,它会列出供我选择的表 有没有办法直接从SSMS中列出表格?如果不是的话,我该如何用编程的方式(最好是用C语言)来做呢?一定有办法,因为Access显然能够做到这一点。以下是我在C#中的做法。我创建了一
select * from GPData..root.TableName
问题是,我知道查看所有可用表的唯一方法是打开Microsoft Access,就像我要创建一个链接表一样,在此过程中,它会列出供我选择的表
有没有办法直接从SSMS中列出表格?如果不是的话,我该如何用编程的方式(最好是用C语言)来做呢?一定有办法,因为Access显然能够做到这一点。以下是我在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());