Megosztás a következőn keresztül:


Az SQL Server rendszerkatalógusának lekérdezése – gyakori kérdések

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsSQL Analytics-végpont a Microsoft FabricbanWarehouse a Microsoft Fabricban

Ez a téma gyakran ismételt kérdéseket tartalmaz. Ezekre a kérdésekre a válaszok olyan kérdések, amelyek katalógusnézeteken alapulnak.

Gyakori kérdések

Az alábbi szakaszok kategóriák szerint a gyakran feltett kérdéseket sorolják fel.

adattípusok

Táblázatok, indexek, nézetek és korlátok

Modulok (Tárolt eljárások, User-Defined funkciók és triggerek)

Sémák, Felhasználók, Szerepek és Jogosultságok

Válaszok

Hogyan találhatom meg azokat a táblákat, amelyeknek nincs klaszterelt indexe egy meghatározott adatbázisban?

Mielőtt lefuttatnád a következő lekérdezéseket, helyettesítsd <database_name> őket egy érvényes adatbázis névvel.

SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name  
FROM sys.tables AS t  
WHERE NOT EXISTS   
   (  
     SELECT * FROM sys.indexes AS i  
     WHERE i.object_id = t.object_id  
     AND i.type = 1  -- or type_desc = 'CLUSTERED'  
   )  
ORDER BY schema_name, table_name;  
GO  
  

Vagy használhatod a OBJECTPROPERTY függvényt, ahogy az alábbi példában látható.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(schema_id) AS schema_name, name AS table_name  
FROM sys.tables   
WHERE OBJECTPROPERTY(object_id,'TableHasClustIndex') = 0  
ORDER BY schema_id, name;  
GO  
  

FELSŐ

Hogyan találhatom meg az összes tulajdonost egy meghatározott sémában?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT 'OBJECT' AS entity_type  
    ,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name  
    ,name   
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'  
UNION   
SELECT 'TYPE' AS entity_type  
    ,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name  
    ,name   
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>'   
UNION  
SELECT 'XML SCHEMA COLLECTION' AS entity_type   
    ,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name  
    ,xsc.name   
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s  
    ON s.schema_id = xsc.schema_id  
WHERE s.name = '<schema_name>';  
GO  
  

FELSŐ

Hogyan találhatom meg azokat a táblázatokat, amelyeknek nincs elsődleges kulcsa?

Mielőtt lefuttatnád a következő lekérdezéseket, helyettesítsd <database_name> őket egy érvényes adatbázis névvel.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(t.schema_id) AS schema_name  
    ,t.name AS table_name  
FROM sys.tables t   
WHERE object_id NOT IN   
   (  
    SELECT parent_object_id   
    FROM sys.key_constraints   
    WHERE type_desc = 'PRIMARY_KEY_CONSTRAINT' -- or type = 'PK'  
    );  
GO  
  

Vagy lefuttathatod a következő lekérdezést.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(schema_id) AS schema_name  
    ,name AS table_name   
FROM sys.tables   
WHERE OBJECTPROPERTY(object_id,'TableHasPrimaryKey') = 0  
ORDER BY schema_name, table_name;  
GO  
  

FELSŐ

Hogyan találhatom meg azokat a táblázatokat, amelyeknek nincs indexe?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes adatbázis nevet.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(schema_id) AS schema_name  
    ,name AS table_name  
FROM sys.tables   
WHERE OBJECTPROPERTY(object_id,'IsIndexed') = 0  
ORDER BY schema_name, table_name;  
GO  
  

FELSŐ

Hogyan találhatom meg az összes olyan táblát, amelynek van identitás oszlopa?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes adatbázis nevet.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(schema_id) AS schema_name  
    , t.name AS table_name  
    , c.name AS column_name  
FROM sys.tables AS t  
JOIN sys.identity_columns c ON t.object_id = c.object_id  
ORDER BY schema_name, table_name;  
GO  
  

Vagy lefuttathatod a következő lekérdezést.

Megjegyzés:

Ez a lekérdezés nem adja vissza az oszlopok nevét.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(schema_id) AS schema_name  
    ,name AS table_name   
FROM sys.tables   
WHERE OBJECTPROPERTY(object_id,'TableHasIdentity') = 1  
ORDER BY schema_name, table_name;  
GO  
  

FELSŐ

Hogyan találhatom meg egy meghatározott tábla oszlopainak adattípusait?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.table_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT c.name AS column_name  
    ,c.column_id  
    ,SCHEMA_NAME(t.schema_id) AS type_schema  
    ,t.name AS type_name  
    ,t.is_user_defined  
    ,t.is_assembly_type  
    ,c.max_length  
    ,c.precision  
    ,c.scale  
FROM sys.columns AS c   
JOIN sys.types AS t ON c.user_type_id=t.user_type_id  
WHERE c.object_id = OBJECT_ID('<schema_name.table_name>')  
ORDER BY c.column_id;  
GO  
  

FELSŐ

Hogyan találhatom meg egy meghatározott függvény függőségeit?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.function_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) AS referencing_object_name  
    ,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name  
    ,*  
FROM sys.sql_dependencies  
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')  
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);  
GO  
  

FELSŐ

Hogyan találhatom meg az összes tárolt eljárást egy adatbázisban?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes névvel.

  
USE <database_name>;  
GO  
SELECT name AS procedure_name   
    ,SCHEMA_NAME(schema_id) AS schema_name  
    ,type_desc  
    ,create_date  
    ,modify_date  
FROM sys.procedures;  
GO  
  

FELSŐ

Hogyan találhatom meg egy meghatározott tárolt eljárás vagy függvény paramétereit?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.object_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(schema_id) AS schema_name  
    ,o.name AS object_name  
    ,o.type_desc  
    ,p.parameter_id  
    ,p.name AS parameter_name  
    ,TYPE_NAME(p.user_type_id) AS parameter_type  
    ,p.max_length  
    ,p.precision  
    ,p.scale  
    ,p.is_output  
FROM sys.objects AS o  
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id  
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')  
ORDER BY schema_name, object_name, p.parameter_id;  
GO  
  

FELSŐ

Hogyan találhatom meg az összes felhasználó által definiált függvényt egy adatbázisban?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes adatbázis nevet.

USE <database_name>;  
GO  
SELECT name AS function_name   
  ,SCHEMA_NAME(schema_id) AS schema_name  
  ,type_desc  
  ,create_date  
  ,modify_date  
FROM sys.objects  
WHERE type_desc LIKE '%FUNCTION%';  
GO  
  

FELSŐ

Hogyan találhatom meg az összes nézetet egy adatbázisban?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes adatbázis nevet.

USE <database_name>;  
GO  
SELECT name AS view_name   
  ,SCHEMA_NAME(schema_id) AS schema_name  
  ,OBJECTPROPERTYEX(object_id,'IsIndexed') AS IsIndexed  
  ,OBJECTPROPERTYEX(object_id,'IsIndexable') AS IsIndexable  
  ,create_date  
  ,modify_date  
FROM sys.views;  
  

FELSŐ

Hogyan találhatom meg az összes entitást, amelyet az elmúlt N napban módosítottak?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le a és <n_days> értékeket érvényes értékekkel.

USE <database_name>;  
GO  
SELECT name AS object_name   
  ,SCHEMA_NAME(schema_id) AS schema_name  
  ,type_desc  
  ,create_date  
  ,modify_date  
FROM sys.objects  
WHERE modify_date > GETDATE() - <n_days>  
ORDER BY modify_date;  
GO  
  

FELSŐ

Hogyan találhatom meg egy meghatározott tábla LOB adattípusait?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.table_name> érvényes nevekkel.

  
USE <database_name>;  
GO  
SELECT name AS column_name   
    ,column_id   
    ,TYPE_NAME(user_type_id) AS type_name  
    ,max_length  
    ,CASE   
       WHEN max_length = -1 AND TYPE_NAME(user_type_id) <> 'xml'  
            THEN 1  
            ELSE 0  
     END AS [(max)]  
FROM sys.columns  
WHERE object_id=OBJECT_ID('<schema_name.table_name>')   
    AND ( TYPE_NAME(user_type_id) IN ('xml','text', 'ntext','image')  
         OR (TYPE_NAME(user_type_id) IN ('varchar','nvarchar','varbinary')  
         AND max_length = -1)  
        );  
GO  
  

FELSŐ

Hogyan nézzem meg egy modul definícióját?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.object_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT definition  
FROM sys.sql_modules  
WHERE object_id = OBJECT_ID('<schema_name.object_name>');  
GO  
  

Vagy használhatod a OBJECT_DEFINITION függvényt, ahogy az alábbi példában látható.

USE <database_name>;  
GO  
SELECT OBJECT_DEFINITION (OBJECT_ID('<schema_name.object_name>')) AS ObjectDefinition;  
GO  
  

FELSŐ

Hogyan tekinthetem meg a szerverszintű trigger definícióját?

SELECT definition  
FROM sys.server_sql_modules;  
GO  
  

FELSŐ

Hogyan találhatom meg egy meghatározott táblázat elsődleges kulcsának oszlopait?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.table_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT i.name AS index_name  
    ,ic.index_column_id  
    ,key_ordinal  
    ,c.name AS column_name  
    ,TYPE_NAME(c.user_type_id)AS column_type   
    ,is_identity  
FROM sys.indexes AS i  
INNER JOIN sys.index_columns AS ic   
    ON i.object_id = ic.object_id AND i.index_id = ic.index_id  
INNER JOIN sys.columns AS c   
    ON ic.object_id = c.object_id AND c.column_id = ic.column_id  
WHERE i.is_primary_key = 1   
    AND i.object_id = OBJECT_ID('<schema_name.table_name>');  
GO  
  

Vagy használhatod a COL_NAME függvényt, ahogy az alábbi példában látható.

USE <database_name>;  
GO  
SELECT i.name AS index_name  
    ,COL_NAME(ic.object_id,ic.column_id) AS column_name  
    ,ic.index_column_id  
    ,key_ordinal  
FROM sys.indexes AS i  
INNER JOIN sys.index_columns AS ic   
    ON i.object_id = ic.object_id AND i.index_id = ic.index_id  
WHERE i.is_primary_key = 1   
    AND i.object_id = OBJECT_ID('<schema_name.table_name>');  
GO  
  

FELSŐ

Hogyan találom meg egy meghatározott tábla külföldi kulcsának oszlopait?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.table_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT   
    f.name AS foreign_key_name  
   ,OBJECT_NAME(f.parent_object_id) AS table_name  
   ,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name  
   ,OBJECT_NAME (f.referenced_object_id) AS referenced_object  
   ,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name  
   ,is_disabled  
   ,delete_referential_action_desc  
   ,update_referential_action_desc  
FROM sys.foreign_keys AS f  
INNER JOIN sys.foreign_key_columns AS fc   
   ON f.object_id = fc.constraint_object_id   
WHERE f.parent_object_id = OBJECT_ID('<schema_name.table_name>');  
  

FELSŐ

Hogyan találhatom meg azokat az engedélyeket, amelyeket egy meghatározott alapvetítő adott vagy elutasított? A következő példa létrehoz egy függvényt, amely visszaadja annak az entitásnak a nevét, amelyen a jogosultságok ellenőrződnek. A funkciót a következő lekérdezésekben hívják meg. A függvényt minden olyan adatbázisban kell létrehozni, ahol a jogosultságokat ellenőrizni szeretnéd.

-- Create a function to return the name of the entity on which the permissions are checked.  
IF OBJECT_ID (N'dbo.entity_instance_name', N'FN') IS NOT NULL  
    DROP FUNCTION dbo.entity_instance_name;  
GO  
CREATE FUNCTION dbo.entity_instance_name(@class_desc nvarchar(60), @major_id int)   
RETURNS sysname AS  
BEGIN  
    DECLARE @the_entity_name sysname  
    SELECT @the_entity_name = CASE  
        WHEN @class_desc = 'DATABASE' THEN DB_NAME()  
        WHEN @class_desc = 'SCHEMA' THEN SCHEMA_NAME(@major_id)  
        WHEN @class_desc = 'OBJECT_OR_COLUMN' THEN OBJECT_NAME(@major_id)  
        WHEN @class_desc = 'DATABASE_PRINCIPAL' THEN USER_NAME(@major_id)  
        WHEN @class_desc = 'ASSEMBLY' THEN   
            (SELECT name FROM sys.assemblies WHERE assembly_id=@major_id)  
        WHEN @class_desc = 'TYPE' THEN TYPE_NAME(@major_id)  
        WHEN @class_desc = 'XML_SCHEMA_COLLECTION' THEN   
            (SELECT name FROM sys.xml_schema_collections  
              WHERE xml_collection_id=@major_id)  
        WHEN @class_desc = 'MESSAGE_TYPE' THEN   
            (SELECT name FROM sys.service_message_types WHERE message_type_id=@major_id)  
        WHEN @class_desc = 'SERVICE_CONTRACT' THEN   
           (SELECT name FROM sys.service_contracts  
              WHERE service_contract_id=@major_id)  
        WHEN @class_desc = 'SERVICE' THEN  
          (SELECT name FROM sys.services WHERE service_id=@major_id)  
        WHEN @class_desc = 'REMOTE_SERVICE_BINDING' THEN  
          (SELECT name FROM sys.remote_service_bindings  
             WHERE remote_service_binding_id=@major_id)  
        WHEN @class_desc = 'ROUTE' THEN  
          (SELECT name FROM sys.routes WHERE route_id=@major_id)  
        WHEN @class_desc = 'FULLTEXT_CATALOG' THEN  
          (SELECT name FROM sys.fulltext_catalogs WHERE fulltext_catalog_id=@major_id)  
        WHEN @class_desc = 'SYMMETRIC_KEY' THEN  
          (SELECT name FROM sys.symmetric_keys WHERE symmetric_key_id=@major_id)  
        WHEN @class_desc = 'CERTIFICATE' THEN  
          (SELECT name FROM sys.certificates WHERE certificate_id=@major_id)  
        WHEN @class_desc = 'ASYMMETRIC_KEY' THEN  
          (SELECT name FROM sys.asymmetric_keys WHERE asymmetric_key_id=@major_id)  
        WHEN @class_desc = 'SERVER' THEN   
             (SELECT name FROM sys.servers WHERE server_id=@major_id)  
        WHEN @class_desc = 'SERVER_PRINCIPAL' THEN SUSER_NAME(@major_id)  
        WHEN @class_desc = 'ENDPOINT' THEN   
             (SELECT name FROM sys.endpoints WHERE endpoint_id=@major_id)        
        ELSE '?'  
    END  
    RETURN @the_entity_name  
END;  
GO  
-- Return server-level permissions for the user.  
SELECT class  
    ,class_desc  
    ,dbo.entity_instance_name(class_desc, major_id) AS entity_name   
    ,minor_id  
    ,SUSER_NAME(grantee_principal_id) AS grantee  
    ,SUSER_NAME(grantor_principal_id) AS grantor  
    ,type  
    ,permission_name  
    ,state_desc   
FROM sys.server_permissions   
WHERE grantee_principal_id = SUSER_ID('public');  
GO  
-- Return database-level permissions for the user.  
SELECT class  
    ,class_desc  
    ,dbo.entity_instance_name(class_desc , major_id) AS entity_name   
    ,minor_id  
    ,USER_NAME(grantee_principal_id) AS grantee  
    ,USER_NAME(grantor_principal_id) AS grantor  
    ,type  
    ,permission_name  
    ,state_desc     
FROM  sys.database_permissions   
WHERE grantee_principal_id = DATABASE_PRINCIPAL_ID('public');  
GO  

FELSŐ

Hogyan állapítsam meg, hogy egy oszlopot használnak-e egy kiszámított oszlopkifejezésben?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name>le , <schema_name.table_name>, és <column_name> érvényes neveket.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) AS object_name  
    ,COL_NAME(object_id, column_id) AS computed_column   
    ,class_desc  
    ,is_selected  
    ,is_updated  
    ,is_select_all  
FROM sys.sql_dependencies  
WHERE referenced_major_id = OBJECT_ID('<schema_name.table_name>')  
    AND referenced_minor_id = COLUMNPROPERTY(referenced_major_id, '<column_name>', 'ColumnId')  
    AND class = 1;  
GO  
  

FELSŐ

Hogyan találom meg az összes oszlopot, amelyet egy kiszámított oszlopkifejezésben használnak?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes névvel.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(d.referenced_major_id) AS object_name  
    ,COL_NAME(d.referenced_major_id, d.referenced_minor_id) AS column_name  
    ,OBJECT_NAME(referenced_major_id) AS dependent_object_name   
    ,COL_NAME(d.object_id, d.column_id) AS dependent_computed_column  
    ,cc.definition AS computed_column_definition  
FROM sys.sql_dependencies AS d  
JOIN sys.computed_columns AS cc   
    ON cc.object_id = d.object_id AND cc.column_id = d.column_id AND d.object_id=d.referenced_major_id       
WHERE d.class = 1  
ORDER BY object_name, column_name;  
GO  
  

FELSŐ

Hogyan találom meg azokat az oszlopokat, amelyek egy meghatározott CLR felhasználó által definiált típustól vagy alias típustól függnek?

Mielőtt lefuttatná a következő lekérdezést, helyettesítse <database_name> egy érvényes névvel, <schema_name.data_type_name> valamint egy érvényes, séma által minősített CLR felhasználó-definiált típusra, vagy séma által minősített alias típus névre. A következő lekérdezéshez tagság szükséges a db_owner szerephez vagy jogosultságokhoz, hogy lássuk az adatbázisban az összes függő oszlopot és kiszámított oszlop metaadatot.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) AS object_name   
    ,c.name AS column_name   
    ,SCHEMA_NAME(t.schema_id) AS schema_name  
    ,TYPE_NAME(c.user_type_id) AS user_type_name  
    ,c.max_length  
    ,c.precision  
    ,c.scale  
    ,c.is_nullable  
    ,c.is_computed  
FROM sys.columns AS c  
INNER JOIN sys.types AS t ON c.user_type_id = t.user_type_id  
WHERE c.user_type_id = TYPE_ID('<schema_name.data_type_name>');   
GO  
  

A következő lekérdezés egy korlátozott és szűk nézetet ad az oszlopokról, amelyek egy CLR felhasználó által definiált típustól vagy aliastól függenek, de az eredményhalmaz látható a nyilvános szerep számára. Ezt a lekérdezést akkor használhatod, ha REFERENCE jogosultságot adtál a felhasználó által definiált típusodra másoknak, és nincs engedélyed arra, hogy megtekintsd azokat az objektumokat, amelyeket mások létrehoztak, és amelyek ezt a típust használják.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) AS object_name   
    ,COL_NAME(object_id, column_id) AS column_name  
    ,TYPE_NAME(user_type_id) AS user_type  
FROM sys.column_type_usages  
WHERE user_type_id = TYPE_ID('<schema_name.data_type_name>');  
GO  
  

FELSŐ

Hogyan találhatom meg azokat a kiszámított oszlopokat, amelyek egy meghatározott CLR felhasználó által definiált típustól vagy alias típustól függnek?

A következő lekérdezés futtatása előtt helyettesítsd <database_name> egy érvényes névre, valamint <schema_name.data_type_name> egy érvényes, séma által minősített CLR felhasználódefiniált típusra, alias típus névre.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) AS object_name  
    ,COL_NAME(object_id, column_id) AS column_name  
FROM sys.sql_dependencies  
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')  
    AND class = 2 -- schema-bound references to type  
    AND OBJECTPROPERTY(object_id, 'IsTable') = 1;   -- exclude non-table dependencies  
  

FELSŐ

Hogyan találom meg azokat a paramétereket, amelyek egy meghatározott CLR felhasználó által definiált típustól vagy alias típustól függnek?

A következő lekérdezés futtatása előtt helyettesítsd <database_name> egy érvényes névre, valamint <schema_name.data_type_name> egy érvényes, séma által minősített CLR felhasználódefiniált típusra, alias típus névre. A következő lekérdezéshez tagság szükséges a db_owner szerephez vagy jogosultságokhoz, hogy lássuk az adatbázisban az összes függő oszlopot és kiszámított oszlop metaadatot.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) AS object_name  
    ,NULL AS procedure_number  
    ,name AS param_name  
    ,parameter_id AS param_num  
    ,TYPE_NAME(p.user_TYPE_ID) AS type_name  
FROM sys.parameters AS p  
WHERE p.user_TYPE_ID = TYPE_ID('<schema_name.data_type_name>')  
UNION   
SELECT OBJECT_NAME(object_id) AS object_name  
    ,procedure_number  
    ,name AS param_name  
    ,parameter_id AS param_num  
    ,TYPE_NAME(p.user_TYPE_ID) AS type_name  
FROM sys.numbered_procedure_parameters AS p  
WHERE p.user_TYPE_ID = TYPE_ID('<schema_name.data_type_name>')  
ORDER BY object_name, procedure_number, param_num;  
GO  
  

A következő lekérdezés egy korlátozott és szűk nézetet ad a paraméterekre, amelyek a CLR felhasználó által definiált típustól vagy aliastól függenek, de az eredményhalmaz látható a nyilvános szerep számára. Ezt a lekérdezést akkor használhatod, ha REFERENCE jogosultságot adtál a felhasználó által definiált típusodra másoknak, és nincs engedélyed arra, hogy megtekintsd azokat az objektumokat, amelyeket mások létrehoztak, és amelyek ezt a típust használják.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) AS object_name  
    ,parameter_id  
    ,TYPE_NAME(user_type_id) AS type_name  
FROM sys.parameter_type_usages   
WHERE user_type_id = TYPE_ID('<schema_name.data_type_name>');  
GO  
  

FELSŐ

Hogyan találhatom meg azokat a CHECK korlátokat, amelyek egy meghatározott CLR felhasználó által definiált típustól függenek?

A következő lekérdezés futtatása előtt helyettesítse <database_name> egy érvényes névre, valamint <schema_name.data_type_name> egy érvényes, séma által minősített CLR felhasználódefiniált típusnévre.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(o.schema_id) AS schema_name  
    ,OBJECT_NAME(o.parent_object_id) AS table_name  
    ,OBJECT_NAME(o.object_id) AS constraint_name  
FROM sys.sql_dependencies AS d  
JOIN sys.objects AS o ON o.object_id = d.object_id  
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')  
    AND class = 2 -- schema-bound references to type  
    AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies  
GO  
  

FELSŐ

Hogyan találom meg azokat a nézeteket, Transact-SQL függvényeket és Transact-SQL tárolt eljárásokat, amelyek egy meghatározott CLR felhasználó által definiált típustól vagy alias típustól függenek?

A következő lekérdezés futtatása előtt helyettesítsd <database_name> egy érvényes névre, valamint <schema_name.data_type_name> egy érvényes, séma által minősített CLR felhasználódefiniált típusra, alias típus névre.

A függvényben vagy eljárásban definiált paraméterek implicit sémához kötöttek. Ezért azok a paraméterek, amelyek a CLR felhasználó által definiált típustól vagy alias típustól függenek, a sys.sql_dependencies katalógus nézet segítségével is megtekinthetők. Az eljárások és triggerek nem sémához kötöttek. Ez azt jelenti, hogy a folyamatban vagy triggerben meghatározott kifejezés és a CLR felhasználó által definiált típus vagy alias típus közötti függőségek nem maradnak fenn. A séma-korlátú nézetek és sémához kötött felhasználó által definiált függvények, amelyek kifejezései CLR felhasználódefiniált típustól vagy alias típustól függenek, a sys.sql_dependencies katalógus nézetben maradnak fenn. A típusok és a CLR függvények, valamint a CLR eljárások közötti függőségek nem maradnak fenn.

A következő lekérdezés minden séma-függőséget visszaad nézetekben, Transact-SQL függvényekben és Transact-SQL tárolt eljárásokban egy meghatározott CLR felhasználó által definiált típusra vagy alias típusra.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema  
  ,OBJECT_NAME(o.object_id) AS dependent_object_name  
  ,o.type_desc AS dependent_object_type  
  ,d.class_desc AS kind_of_dependency  
  ,TYPE_NAME (d.referenced_major_id) AS type_name  
FROM sys.sql_dependencies AS d   
JOIN sys.objects AS o  
  ON d.object_id = o.object_id  
  AND o.type IN ('FN','IF','TF', 'V', 'P')  
WHERE d.class = 2 -- dependencies on types  
  AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')  
ORDER BY dependent_object_schema, dependent_object_name;  
GO  
  

FELSŐ

Hogyan találhatom meg az összes feltételt egy meghatározott táblához?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.table_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id) as constraint_name  
    ,SCHEMA_NAME(schema_id) AS schema_name  
    ,OBJECT_NAME(parent_object_id) AS table_name  
    ,type_desc  
    ,create_date  
    ,modify_date  
    ,is_ms_shipped  
    ,is_published  
    ,is_schema_published  
FROM sys.objects  
WHERE type_desc LIKE '%CONSTRAINT'   
    AND parent_object_id = OBJECT_ID('<schema_name.table_name>');  
GO  
  

FELSŐ

Hogyan találhatom meg az összes indexet egy meghatározott táblához?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.table_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT i.name AS index_name  
    ,i.type_desc  
    ,is_unique  
    ,ds.type_desc AS filegroup_or_partition_scheme  
    ,ds.name AS filegroup_or_partition_scheme_name  
    ,ignore_dup_key  
    ,is_primary_key  
    ,is_unique_constraint  
    ,fill_factor  
    ,is_padded  
    ,is_disabled  
    ,allow_row_locks  
    ,allow_page_locks  
FROM sys.indexes AS i  
INNER JOIN sys.data_spaces AS ds ON i.data_space_id = ds.data_space_id  
WHERE is_hypothetical = 0 AND i.index_id <> 0   
AND i.object_id = OBJECT_ID('<schema_name.table_name>');  
GO  
  

FELSŐ

Hogyan találhatom meg az összes objektumot, amelynek meghatározott oszlopneve van?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <column_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT OBJECT_NAME(object_id)  
FROM sys.columns  
WHERE name = '<column_name>';  
GO  
  

Vagy

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(o.schema_id) AS schema_name   
    ,o.name AS object_name  
    ,type_desc  
FROM sys.objects AS o  
INNER JOIN sys.columns AS c ON o.object_id = c.object_id  
WHERE c.name = '<column_name>';  
GO  
  

FELSŐ

Hogyan találhatom meg az összes felhasználó által definiált táblát egy meghatározott adatbázisban?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes névvel.

USE <database_name>;  
GO  
SELECT *   
FROM sys.tables;  
GO  
  

FELSŐ

Hogyan találhatom meg az összes tagot és indexet, amelyek fel vannak osztva?

Mielőtt lefuttatnád a következő lekérdezést, helyettesítsd <database_name> egy érvényes névvel.

USE <database_name>;  
GO  
SELECT SCHEMA_NAME(o.schema_id) AS schema_name  
    ,OBJECT_NAME(p.object_id) AS table_name  
    ,i.name AS index_name  
    ,p.partition_number  
    ,rows   
FROM sys.partitions AS p  
INNER JOIN sys.indexes AS i ON p.object_id = i.object_id AND p.index_id = i.index_id  
INNER JOIN sys.partition_schemes ps ON i.data_space_id=ps.data_space_id  
INNER JOIN sys.objects AS o ON o.object_id = i.object_id  
ORDER BY index_name, partition_number;  
GO  
  

FELSŐ

Hogyan találhatom meg az összes statisztikát egy adott objektumon?

A következő lekérdezés futtatása előtt <database_name> helyettesítsd érvényes névre, <schema_name.object_name> valamint érvényes táblára, indexelt nézetre vagy táblaértékű függvénynévre.

USE <database_name>;  
GO  
SELECT name AS statistics_name  
    ,stats_id  
    ,auto_created  
    ,user_created  
    ,no_recompute  
FROM sys.stats  
WHERE object_id = OBJECT_ID('<schema_name.object_name>');  
GO  
  

FELSŐ

Hogyan találhatom meg az összes statisztikát és statisztikai oszlopot egy meghatározott objektumon?

A következő lekérdezés futtatása előtt <database_name> helyettesítsd érvényes névre, <schema_name.object_name> valamint érvényes táblára, indexelt nézetre vagy táblaértékű függvénynévre.

USE <database_name>;  
GO  
SELECT s.name AS statistics_name  
    ,c.name AS column_name  
    ,sc.stats_column_id  
FROM sys.stats AS s  
INNER JOIN sys.stats_columns AS sc   
    ON s.object_id = sc.object_id AND s.stats_id = sc.stats_id  
INNER JOIN sys.columns AS c   
    ON sc.object_id = c.object_id AND c.column_id = sc.column_id  
WHERE s.object_id = OBJECT_ID('<schema_name.object_name>');  
GO  
  

FELSŐ

Hogyan találom meg a nézet definícióját?

Mielőtt lefuttatnád a következő lekérdezést, cseréld <database_name> le és <schema_name.object_name> érvényes nevekkel.

USE <database_name>;  
GO  
SELECT definition  
FROM sys.sql_modules  
WHERE object_id = OBJECT_ID('<schema_name.object_name>');  
GO  
  

Vagy használhatod a OBJECT_DEFINITION függvényt, ahogy az alábbi példában látható.

USE <database_name>;  
GO  
SELECT OBJECT_DEFINITION (OBJECT_ID('<schema_name.object_name>')) AS ObjectDefinition;  
GO  
  

FELSŐ

Lásd még: