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

本文关键字:连接 数据库 服务器 vs | 更新日期: 2023-09-27 18:12:26

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

问题的背景是,我负责开发一个概念证明,其中用户可以选择我们的一个服务器,该服务器中的数据库,该数据库中的表和该表中的列。我正在使用Visual c#和ASP.NET。我相信我可以从网络中的连接字符串中获得服务器。

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

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

(对原来问题的回答)

有一个层次结构:

  • 服务器:一块运行操作系统和应用程序的物理(或虚拟)硬件。您将通过IP地址或DNS名称来解决它,可以托管多个数据库服务器
    • 数据库服务器(又名实例):一个运行的软件,可以承载多个数据库。当你使用连接字符串时,它的格式是"服务器名'实例名"
      • Database:可以承载多个数据表的数据结构
        • 数据表:一个数据结构,可以容纳多个列和行
          • Column:最小的信息分隔,保存特定主题的信息
          • Row:保存一组列。

(更新问题的答案)

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

select * from sys.databases 

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

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

来获取你所做的列

select * from sys.Columns

然而,要获得列所在表的名称,您需要将Object_idObject_id匹配到sys.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'

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

SELECT * FROM sys.databases

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

SELECT * FROM INFORMATION_SCHEMA.TABLES

重复选择列。

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

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