Sql 为我们的网络创建数据库目录
这个项目的最终产品是为我们所有的服务器创建一个数据库目录。它需要是动态的,这样当我们更改服务器的名称和位置时,我们仍然可以报告它们。通常,我们希望创建一个包含服务器名、数据库名、表名和列名的表。在那里,我将使用报表设计器以管理人员希望的方式显示结果 我的想法是使用Excel工作表作为服务器名称列表。从那里我应该可以查询所有其他的信息。在下面的代码中,我将手动填充服务器名称 现在,我的代码将获得第一行信息:第一个服务器名、第一个数据库名、第一个表名、第一个列名。接下来我需要它为第一个表中的每个列名创建一行,然后转到下一个表,直到该数据库中的所有表都完成,然后移动到下一个数据库,直到所有数据库都完成,然后移动到下一个服务器。我想我已经掌握了所有的基本知识,但是在子查询方面需要帮助Sql 为我们的网络创建数据库目录,sql,sql-server,Sql,Sql Server,这个项目的最终产品是为我们所有的服务器创建一个数据库目录。它需要是动态的,这样当我们更改服务器的名称和位置时,我们仍然可以报告它们。通常,我们希望创建一个包含服务器名、数据库名、表名和列名的表。在那里,我将使用报表设计器以管理人员希望的方式显示结果 我的想法是使用Excel工作表作为服务器名称列表。从那里我应该可以查询所有其他的信息。在下面的代码中,我将手动填充服务器名称 现在,我的代码将获得第一行信息:第一个服务器名、第一个数据库名、第一个表名、第一个列名。接下来我需要它为第一个表中的每个列名
--- Drop and recreate the Servers_To_Catalog table if it exists.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Servers_To_Catalog]') AND TYPE IN (N'U'))
DROP TABLE [dbo].[Servers_To_Catalog]
go
CREATE TABLE dbo.Servers_To_Catalog (ServerName nvarchar(50), Comment nvarchar(200));
GO
--------------------------------------------------------------------------------------------------------------------
--- Populate the Servers_To_Catalog table from an Excel sheet or manually below
Insert Into Servers_To_Catalog (ServerName) values ('CESDBS_OLD')
Insert Into Servers_To_Catalog (ServerName) values ('CESDBS')
Insert Into Servers_To_Catalog (ServerName) values ('DBS2000')
Insert Into Servers_To_Catalog (ServerName) values ('CESOES')
Insert Into Servers_To_Catalog (ServerName) values ('CESROUTE')
Insert Into Servers_To_Catalog (ServerName) values ('CESBS')
Insert Into Servers_To_Catalog (ServerName) values ('WHDBS')
Insert Into Servers_To_Catalog (ServerName) values ('CESDATA')
----------------------------------------------------------------------------------------------------------------------
--- Drop and recreate the temporary Database_Locations table if it exists.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Database_Locations]') AND TYPE IN (N'U'))
DROP TABLE [dbo].[Database_Locations]
go
CREATE TABLE dbo.Database_Locations (ServerName nvarchar(50), DBName nvarchar(50), TableName nvarchar(50), ColumnName nvarchar(50));
GO
----------------------------------------------------------------------------------------------------------------------
--- Bring in the server names from the Servers_To_Catalog table as @SName.
DECLARE @SName NVARCHAR(50)
SELECT @SName = ServerName
From dbo.Servers_To_Catalog
--- Bring in the names of the databases on a given server as @DName, excluding system databases.
DECLARE @DName NVARCHAR (50)
SELECT @DName = NAME
From sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')
--- Bring in the names of the tables for a given database as @TName
DECLARE @TName NVARCHAR(50)
SELECT @TName = NAME
FROM sys.Tables
--- Use @TName to get the list of columns
Declare @CName NVarchar(50)
SELECT @CNAME = NAME
From syscolumns
Where id = object_id(@TName)
---Write row to Database_Locations table
Insert into dev.dbo.Database_Locations (ServerName, DBName, TableName, ColumnName) Select @SName, @DName, @TName, @CName
啊。格式粘贴得乱七八糟。我希望你能理解。这里有什么问题?有什么问题?你想实现什么(我不是说你的整个系统应该做什么,而是说你想从这些具体的查询中得到什么)以及你现在从查询中得到什么?显示初始数据(比如:我有数据库A和表B、C,数据库A1和表B1、C1)和期望的结果(比如:我想有一个查询,它给出(A、B)(A1、B1))。