3

连接到服务器与连接到数据库有什么区别?

问题的上下文是我负责开发概念证明,用户可以在其中选择我们的一个服务器、该服务器中的一个数据库、该数据库中的一个表以及该表中的一个列。我正在使用 Visual C# 和 ASP.NET。我相信我可以从 web.config 中的连接字符串中获取服务器,但我不太确定如何。

如果它有帮助(我喜欢例子),你可以假设 SQL 服务器。

4

3 回答 3

4

(对原始问题的回答)

有一个层次结构:

  • 服务器:运行操作系统和应用程序的一块物理(或虚拟)硬件。您将通过 IP 地址或 DNS 名称对其进行寻址,可以托管多个数据库服务器
    • 数据库服务器(又名实例):一个运行的软件,可以托管多个数据库。当您使用连接字符串时,它的格式为“ServerName\InstanceName”
      • 数据库:可以承载多个数据表的数据结构
        • 数据表:可以承载多个列和行的数据结构
          • Column:信息分离的最小划分,保存有关特定主题的信息
          • :包含一组列。

(回答更新的问题)

每个 SQL 提供程序都不同,但使用 Microsleft SQL 服务器,您只需连接到服务器(不要在连接字符串中提供默认实例)并执行以下操作:

select * from sys.databases 

拥有数据库后,连接到该数据库并执行以下操作以获取表

select * from sys.tables where type = 'U'

得到你做的列

select * from sys.Columns

但是,要获取该列所在的表的名称,您需要匹配Object_idObject_idonsys.tables

select t.name as TableName, c.Name as ColumnName  
from sys.tables t
inner join sys.columns c on t.object_id = c.object_id
where t.Type = 'U'
于 2013-05-07T19:23:27.370 回答
4

你可以实现你的目标。最初,您将连接到master服务器上的数据库并查询该服务器上的数据库。

SELECT * FROM sys.databases

然后,您将启动与所选数据库的新连接并查询该数据库的信息模式,以获取表列表。

SELECT * FROM INFORMATION_SCHEMA.TABLES

重复选择一列。

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'foo'
于 2013-05-07T19:29:51.960 回答
0

如果服务器是指数据库服务器,您将连接到服务器以访问该服务器上托管的数据库。

于 2013-05-07T19:23:41.777 回答