o/ Hello All,
我正在尝试为一个ERP创建一个模式,可笑的是,它的数据库中没有用于62个表的模式。我们,我为之工作的人,没有DBA,因此我正试图自己解决这个问题。此外,我没有数据库所有者规则,我认为这限制了我可以查看的内容;但是,我已经确认这不是标准的模式/图
我搜索并尝试了大约12个我在这里找到的查询,但没有得到我想要的信息。
是否有一个sysobjects查询可以用来列出表的所有字段和适当的键?啊,我是SQL的新手。我可以处理查询,但在管理方面我一无所知。我正在从事MS SQL Server Management Studio 2017的工作。
谢谢大家。
附注:我知道这可能看起来是重复的,但我们的IT部门一次又一次地告诉我,ERP的数据库是一团糟的,这就是为什么他们一直不愿授权我访问。我认为我们的标准思想可能不适用于这个特定的数据库,因此有很长的帖子/描述。
发布于 2017-10-27 23:55:59
我已经很长时间没有使用MS SQL了,但我认为你可以使用以下方法:
描述table_name或sp_columns table_name
希望这能有所帮助。
发布于 2017-10-28 01:44:37
下面的脚本将为您提供所有表名、列名、每列的数据类型、列的宽度、键是主键还是次键以及外键的被引用表和列。
SELECT SA.TABLE_NAME,
SA.COLUMN_NAME,
SA.DATA_TYPE,
SA.CHARACTER_MAXIMUM_LENGTH AS Column_Width,
PK.type AS PRIMARY_KEY,
FK.type AS Foriegn_KEY,
SAU.CONSTRAINT_NAME,
SO.[Name] + '_' + SAU.COLUMN_NAME Referenced_Table_Column
FROM Stack.INFORMATION_SCHEMA.COLUMNS AS SA
LEFT JOIN STACK.INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS SAU
ON SAU.COLUMN_NAME = SA.COLUMN_NAME
LEFT JOIN sys.foreign_keys AS FK
ON FK.[NAME] = SAU.CONSTRAINT_NAME
LEFT JOIN sys.key_constraints AS PK
ON PK.[NAME] = SAU.CONSTRAINT_NAME
LEFT JOIN sys.objects AS SO
ON SO.object_id = FK.referenced_object_id OR
SO.object_id = PK.parent_object_id可能的限制:
当数据库使用sys表和information_schema.时,
解决方法:
https://stackoverflow.com/questions/46978846
复制相似问题