连接到服务器vs连接到数据库

时间:2013-05-07 19:10:49

标签: c# asp.net

连接服务器而不是连接数据库有什么区别?

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

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

3 个答案:

答案 0 :(得分:4)

(回答原问题)

有一个层次结构:

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

(回答更新的问题)

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

select * from sys.databases 

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

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

获取你做的列

select * from sys.Columns

但要获取列所在表格的名称,您需要在Object_id上将Object_idsys.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'

答案 1 :(得分:4)

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

SELECT * FROM sys.databases

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

SELECT * FROM INFORMATION_SCHEMA.TABLES

重复选择一列。

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'foo'

答案 2 :(得分:0)

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