I want to get with SQL all information about all the tables in my database, whit this order: First, the Table Name, Attribute, Data Type, Lenght, Constraint(PK, FK), and ReferencesTable. Because I'm doing a dictionary of data in excel. So I want to export the result of that query to my excel.
For example this query brings me the PK for all the tables that I have in my database:
select schema_name(tab.schema_id) as [schema_name], tab.[name] as table_name, pk.[name] as pk_name, substring(column_names, 1, len(column_names)-1) as [columns] from sys.tables tab left outer join sys.indexes pk on tab.object_id = pk.object_id and pk.is_primary_key = 1 cross apply (select col.[name] + ', ' from sys.index_columns ic inner join sys.columns col on ic.object_id = col.object_id and ic.column_id = col.column_id where ic.object_id = tab.object_id and ic.index_id = pk.index_id order by col.column_id for xml path ('') ) D (column_names) order by schema_name(tab.schema_id), tab.[name]
I try many queries but I can't create one that brings me in ONE query all that information that I want.
It has to be IN ONE QUERY.
I put here an example for the columns that I need.