Questions tagged «metadata»

描述其他数据或数据结构的数据。


7
复制表格的完整结构
使用某些方法,当您创建表的副本时,会丢失索引,PK,FK等。例如,在SQL Server中,我可以说: select * into dbo.table2 from dbo.table1; 这只是表的简单副本;缺少所有索引/约束。如何复制表结构(不使用备份)? 我主要是希望手动执行此操作,但是如果不可能,我将接受任何解决方案。

1
如何强制SQL Server Management Studio更新IntelliSense缓存?
除非我关闭并重新启动,否则SSMS中的IntelliSense不会更新。我曾尝试从服务器断开连接,然后在SSMS会话处于活动状态时重新连接,但这不起作用。 重建步骤: 建立表格 从该表中选择某项 SSMS在其下方显示波浪状的红线,并显示提示“无效的对象名称” 执行查询 如何在不重新启动SSMS的情况下强制IntelliSense更新?


5
在数据库中存储单位的最佳方法
我继承了一个大型(SQLServer)数据库,其中包含数百个列,这些列代表一件事或另一件事的数量。这些值的单位(例如“加仑”,“英寸”等)存储在扩展属性的MS_Description字段中。我想知道是否有更好的方法来存储此信息。我认为这对于文档目的来说是很好的,但是很难基于此数据进行可靠的单位转换计算。目前,我还没有准备好进行侵入性更改,但是如果有机会,我在这方面建议的最佳实践是什么?在我头顶上方的选项可能包括: 将列名称更改为包含的单位(例如,“ TotalVolumeInGallons”。这将使该信息更容易获得,但对我而言似乎仍然很薄弱。) 添加一个单独的“单位”列以对应于每个“金额”列(此列可以是nvarchar,也可以是一个单独的“单位”表的外键,这可能使计算单位转换更加容易。许多列可以使我的数据库大小增加一倍-拥有非常冗余的数据。) 在扩展属性中专门为单位创建一个新字段。(不幸的是,我认为这不是Units表的外键。) 我还有其他想法要忽略吗? 更新:阅读@Todd Everett的答案后,我想到了一个可能的解决方案,所以我将继续回答自己的问题。(见下文)

4
sys.databases中某些列的排序如何处理?
我正在尝试UNPIVOT在sys.databases2005年至2012年的各个版本的SQL Server中包含的各个列上运行。 在UNPIVOT与以下错误消息失败: 消息8167,第16层,状态1,第48行 列“ CompatibilityLevel”的类型与UNPIVOT列表中指定的其他列的类型冲突。 T-SQL: DECLARE @dbname SYSNAME; SET @dbname = DB_NAME(); SELECT [Database] = unpvt.DatabaseName , [Configuration Item] = unpvt.OptionName , [Configuration Value] = unpvt.OptionValue FROM ( SELECT DatabaseName = name , RecoveryModel = CONVERT(VARCHAR(50), d.recovery_model_desc) , CompatibilityLevel = CONVERT(VARCHAR(50), CASE d.[compatibility_level] WHEN 70 THEN 'SQL Server …

2
查找与给定主键关联的外键
我想要一种通过PK / FK关系建立给定数据库中的哪些列的方法。我可以通过以下方式返回给定表的PK / FK信息 SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS cu WHERE EXISTS ( SELECT tc.* FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc WHERE tc.CONSTRAINT_CATALOG = 'MyDatabase' AND tc.TABLE_NAME = 'MyTable' /*AND tc.CONSTRAINT_TYPE = 'PRIMARY KEY'*/ AND tc.CONSTRAINT_NAME = cu.CONSTRAINT_NAME); GO 但是对于从这样的查询返回的PK,我如何建立关联的FK(假设有一个)? 我知道您也可以通过以下方式获取引用的表: SELECT CONSTRAINT_NAME = name, FOREIGN_SCHEMA = OBJECT_SCHEMA_NAME(parent_object_id), FOREIGN_TABLE = OBJECT_NAME(parent_object_id), …

4
PostgreSQL 9.6列删除和带有CTE的SQL函数的副作用
如果我有一个包含3列的表(例如A,B和D),并且我不得不引入一个新表(例如C)来替换D的当前位置。我将使用以下方法: 引入2个新列作为C和D2。 将D的内容复制到D2。 删除D。 将D2重命名为D。 新订单将为A,B,C和D。 我认为这是合法的做法,因为(到目前为止)它没有产生任何问题。 但是,今天,当在同一张表上执行语句的函数返回以下错误时,我遇到了一个问题: table row type and query-specified row type do not match 以及以下详细信息: Query provides a value for a dropped column at ordinal position 13 我尝试重新启动PostgreSQL,执行a VACUUM FULL,最后按照此处和此处的建议删除并重新创建该函数,但是这些解决方案均无效(除了它们尝试解决系统表已更改的情况外)。 由于可以使用非常小的数据库,因此我将其导出,删除并重新导入,从而解决了我的功能问题。 我知道这样一个事实,即不应该通过修改系统表来弄乱列的自然顺序(用弄脏手pg_attribute等),如下所示: 是否可以更改Postgres中列的自然顺序? 从我的函数抛出的错误来看,我现在意识到用我的方法移动列的顺序也是不行的。谁能为我的工作为什么也出错提供一些启发? Postgres版本是9.6.0。 这是函数: CREATE OR REPLACE FUNCTION "public"."__post_users" ("facebookid" text, "useremail" text, "username" …

2
是否存在确定多个文件文件组中包含分配单元的确切文件的方法?
我希望能够详细了解哪些数据库文件包含用于数据库中各种HoBT(对齐和不对齐)的分配单元。 在我们开始为每个文件组创建多个数据文件之前,我一直使用的查询(请参见下文)对我很有帮助,而我只能弄清楚如何获得与文件组级别一样的粒度。 select SchemaName = sh.name, TableName = t.name, IndexName = i.name, PartitionNumber = p.partition_number, IndexID = i.index_id, IndexDataspaceID = i.data_space_id, AllocUnitDataspaceID = au.data_space_id, PartitionRows = p.rows from sys.allocation_units au join sys.partitions p on au.container_id = p.partition_id join sys.indexes i on i.object_id = p.object_id and i.index_id = p.index_id join sys.tables …

3
有开源元数据管理解决方案吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 6年前关闭。 有开源元数据管理解决方案吗?我想创建一个元数据存储库,其中将保存数百个企业数据库的数据库模式,表和数据项的元数据的详细信息。 我对可以自动查询数据库架构数据以跟踪与表相关的元数据中的更改的东西特别感兴趣。即更改列数据大小,添加的表和列等。
13 schema  metadata 

8
如何编写查询以查找数据库中具有特定列名的所有表
我有一个包含约100个表的数据库,我需要建立一个联接查询以从其中两个表中获取特定数据。我知道一个,但另一个不知道。基本上我需要这样的东西: select <tables> from <database> where exists table.column name; 我怎样才能做到这一点?
12 metadata 

2
DATALENGTH的总和与sys.allocation_units中的表大小不匹配
我的印象是,如果我将DATALENGTH()一个表中所有记录的所有字段的总和求和,我将得出该表的总大小。我错了吗? SELECT SUM(DATALENGTH(Field1)) + SUM(DATALENGTH(Field2)) + SUM(DATALENGTH(Field3)) TotalSizeInBytes FROM SomeTable WHERE X, Y, and Z are true 我在下面使用此查询(我从网上获得此查询来获取表大小,仅聚集索引,因此它不包含NC索引)来获取数据库中特定表的大小。出于计费目的(我们按部门使用的空间量向部门收取费用),我需要找出此表中每个部门使用的空间。我有一个查询,用于标识表中的每个组。我只需要弄清楚每个小组要占用多少空间。 由于VARCHAR(MAX)表中的字段,每行空间可能会波动很大,因此我不能只取平均大小*部门的行数比率。当我使用上述DATALENGTH()方法时,我只能获得下面查询中使用的总空间的85%。有什么想法吗? SELECT s.Name AS SchemaName, t.NAME AS TableName, p.rows AS RowCounts, (SUM(a.total_pages) * 8)/1024 AS TotalSpaceMB, (SUM(a.used_pages) * 8)/1024 AS UsedSpaceMB, ((SUM(a.total_pages) - SUM(a.used_pages)) * 8)/1024 AS UnusedSpaceMB FROM sys.tables t with …



1
存储记录元数据的最佳实践
在数据库中存储单个记录的元数据的最佳实践是什么? 我需要在数据库中存储常见的元数据,例如创建时间和最后更新时间。我找到了几种不同的解决方案: 将元数据直接存储在表中。 优点: 元数据直接链接到记录 无需联接即可检索元数据 缺点: 需要大量重复的列(除非使用继承) 元数据和业务数据不分开 使用创建通用元数据表,并使用软外键将数据链接到正确的表和记录。 优点: 没有重复的列 元数据与业务数据分开 缺点: 元数据和数据之间没有直接链接(不能使用FK) 加入需要附加条件 为每个需要元数据的表创建单独的元数据表。 优点: 元数据直接链接到记录 元数据与业务数据分开 缺点: 需要很多额外的表 需要大量重复的列(除非使用继承) 是否有比我在这里提到的更多的优缺点?存储此元数据的最佳实践是什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.