sqlserver.xml 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: relmd
  5. (C) Copyright IBM Corp. 2008, 2015
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  10. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  11. MS SQL Server metadata extraction rules
  12. -->
  13. <relmd:vendorRules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:relmd="http://www.ibm.com/xmlns/prod/cognos/relmd/1/0" xsi:schemaLocation="http://www.ibm.com/xmlns/prod/cognos/relmd/1/0 ../../webcontent/relmd/vendor/relmdVendorRules.xsd">
  14. <relmd:caseSensitivityRules relmd:storage="upper"/>
  15. <relmd:codePageRules relmd:value="unicode"/>
  16. <relmd:defaultCatalogSchemaQueryRules>
  17. <relmd:sql>SELECT db_name() defaultCatalog, schema_name() defaultSchema</relmd:sql>
  18. </relmd:defaultCatalogSchemaQueryRules>
  19. <relmd:catalogGranularityRules>
  20. <relmd:currentCatalogGetRules>
  21. <relmd:sql>select db_name()</relmd:sql>
  22. </relmd:currentCatalogGetRules>
  23. <relmd:currentCatalogSetRules>
  24. <relmd:catalogGrainSql>
  25. USE "<relmd:catalogSubstitution/>" select db_name()
  26. </relmd:catalogGrainSql>
  27. </relmd:currentCatalogSetRules>
  28. <relmd:accessibleCatalogsQueryRules>
  29. <relmd:javaClass relmd:qualifiedClassName="com.ibm.cognos.internal.relmd.session.query.SqlServerAccessibleCatalogsQuery"/>
  30. </relmd:accessibleCatalogsQueryRules>
  31. </relmd:catalogGranularityRules>
  32. <relmd:tablesImportRules>
  33. <relmd:catalogGrainSql>SELECT db_name() CATALOGNAME, A.TABLE_SCHEMA SCHEMANAME, A.TABLE_NAME TABLENAME
  34. , CASE WHEN A.TABLE_TYPE ='BASE TABLE' THEN 'T' ELSE A.TABLE_TYPE END TABLE_TYPE
  35. , '' DESCRIPTION
  36. FROM INFORMATION_SCHEMA.TABLES A
  37. WHERE A.TABLE_TYPE ='BASE TABLE'
  38. ORDER BY SCHEMANAME, TABLENAME</relmd:catalogGrainSql>
  39. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.TABLE_TYPE ='BASE TABLE'" relmd:insertLocation="after" relmd:insertPrefix="AND">
  40. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME"/>
  41. </relmd:objectSelectionsInclusion>
  42. </relmd:tablesImportRules>
  43. <relmd:viewsImportRules>
  44. <relmd:catalogGrainSql>SELECT db_name() CATALOGNAME, A.TABLE_SCHEMA SCHEMANAME, A.TABLE_NAME TABLENAME
  45. , CASE WHEN A.TABLE_TYPE ='VIEW' THEN 'V' ELSE A.TABLE_TYPE END TABLE_TYPE
  46. , '' DESCRIPTION
  47. FROM INFORMATION_SCHEMA.TABLES A
  48. WHERE A.TABLE_TYPE ='VIEW'
  49. ORDER BY SCHEMANAME, TABLENAME</relmd:catalogGrainSql>
  50. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.TABLE_TYPE ='VIEW'" relmd:insertLocation="after" relmd:insertPrefix="AND">
  51. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME"/>
  52. </relmd:objectSelectionsInclusion>
  53. </relmd:viewsImportRules>
  54. <relmd:columnsImportRules>
  55. <relmd:catalogGrainSql>
  56. SELECT db_name() CATALOGNAME, A.TABLE_SCHEMA SCHEMANAME, A.TABLE_NAME TABLENAME, A.COLUMN_NAME COLUMNNAME
  57. , A.DATA_TYPE DATATYPE
  58. , CHARACTER_MAXIMUM_LENGTH LENGTH
  59. , CASE WHEN A.NUMERIC_PRECISION IS NOT NULL THEN A.NUMERIC_PRECISION ELSE A.DATETIME_PRECISION END AS 'PRECISION'
  60. , A.NUMERIC_SCALE SCALE
  61. , CASE WHEN A.IS_NULLABLE = 'YES' THEN 'true' ELSE 'false' END NULLABLEFLAG
  62. , A.COLUMN_DEFAULT DEFAULT_VALUE, A.COLLATION_NAME collationSequence, '' DESCRIPTION
  63. FROM INFORMATION_SCHEMA.COLUMNS A
  64. ORDER BY SCHEMANAME, TABLENAME, A.ORDINAL_POSITION</relmd:catalogGrainSql>
  65. <relmd:objectSelectionsInclusion relmd:sqlFragment="FROM INFORMATION_SCHEMA.COLUMNS A" relmd:insertLocation="after" relmd:insertPrefix="WHERE">
  66. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME" relmd:columnExpression="A.COLUMN_NAME"/>
  67. </relmd:objectSelectionsInclusion>
  68. </relmd:columnsImportRules>
  69. <relmd:uniqueKeysImportRules>
  70. <relmd:catalogGrainSql>SELECT db_name() CATALOGNAME, B.TABLE_SCHEMA SCHEMANAME, B.TABLE_NAME TABLENAME, B.CONSTRAINT_NAME REFKEYNAME , B.COLUMN_NAME COLUMNNAME, B.ORDINAL_POSITION REFCOLUMNSEQUENCE
  71. FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS A, INFORMATION_SCHEMA.KEY_COLUMN_USAGE B
  72. WHERE A.TABLE_CATALOG = B.TABLE_CATALOG AND A.TABLE_SCHEMA = B.TABLE_SCHEMA AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.CONSTRAINT_TYPE IN ('PRIMARY KEY', 'UNIQUE')
  73. ORDER BY SCHEMANAME, TABLENAME, REFKEYNAME, REFCOLUMNSEQUENCE</relmd:catalogGrainSql>
  74. <relmd:objectSelectionsInclusion relmd:sqlFragment="A.CONSTRAINT_TYPE IN ('PRIMARY KEY', 'UNIQUE')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  75. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME"/>
  76. </relmd:objectSelectionsInclusion>
  77. </relmd:uniqueKeysImportRules>
  78. <relmd:foreignKeysImportRules>
  79. <relmd:catalogGrainSql>SELECT db_name() AS 'parentCatalog', KCU1.CONSTRAINT_SCHEMA AS 'parentSchema', KCU1.TABLE_NAME AS 'parentQueryObject', KCU1.CONSTRAINT_NAME AS 'foreignKeyName', KCU1.COLUMN_NAME AS 'exportedColumn', KCU1.ORDINAL_POSITION AS 'columnSequence', KCU1.CONSTRAINT_CATALOG AS 'importCatalog', KCU1.CONSTRAINT_SCHEMA AS 'importedSchema', KCU2.TABLE_NAME AS 'importedTable', KCU2.CONSTRAINT_NAME AS 'importedUniqueKey', KCU2.COLUMN_NAME AS 'importedColumn', '' AS 'description'
  80. FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
  81. JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1
  82. ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
  83. AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
  84. AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
  85. JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2
  86. ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG
  87. AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
  88. AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION
  89. ORDER BY parentSchema, parentQueryObject, foreignKeyName, columnSequence</relmd:catalogGrainSql>
  90. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION" relmd:insertLocation="after" relmd:insertPrefix="WHERE">
  91. <relmd:objectSelectionsCondition relmd:schemaExpression="KCU1.CONSTRAINT_SCHEMA" relmd:objectExpression="KCU1.TABLE_NAME"/>
  92. </relmd:objectSelectionsInclusion>
  93. </relmd:foreignKeysImportRules>
  94. <relmd:indexesImportRules>
  95. <relmd:catalogGrainSql>SELECT db_name() AS tableCatalog, S.name AS tableSchema, T.name tableName, I.name indexName, I.is_unique uniqueRule, CASE I.type WHEN 1 THEN 3 ELSE 1 END storageType, db_name() parentCatalog, S.name parentSchema, IC.column_id, C.name columnName, CASE IC.is_descending_key WHEN 1 THEN 'D' ELSE 'A' END sortOrder, '' description
  96. FROM sys.indexes I, sys.index_columns IC, sys.tables T, sys.columns C, sys.schemas S
  97. WHERE I.object_id = IC.object_id
  98. AND I.index_id = IC.index_id
  99. AND T.object_id = IC.object_id
  100. AND C.object_id = IC.object_id
  101. AND C.column_id = IC.column_id
  102. AND T.schema_id = S.schema_id
  103. --AND I.is_primary_key = 0
  104. ORDER BY tableSchema, tableName, indexName, IC.column_id</relmd:catalogGrainSql>
  105. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND T.schema_id = S.schema_id" relmd:insertLocation="after" relmd:insertPrefix="AND">
  106. <relmd:objectSelectionsCondition relmd:schemaExpression="S.name" relmd:objectExpression="T.name"/>
  107. </relmd:objectSelectionsInclusion>
  108. </relmd:indexesImportRules>
  109. <relmd:synonymsImportRules>
  110. <relmd:catalogGrainSql>
  111. SELECT db_name() AS parentCatalog, S.name AS parentSchema, SYN.name AS synonymName
  112. , CASE LTRIM(RTRIM(UPPER(PARSENAME(SYN.base_object_name,4))))
  113. WHEN NULL THEN NULL
  114. WHEN LTRIM(RTRIM(CONVERT(NVARCHAR(1024), SERVERPROPERTY('ServerName')))) THEN NULL
  115. ELSE UPPER(PARSENAME(SYN.base_object_name,4))
  116. END AS externalHostRef
  117. , PARSENAME(SYN.base_object_name,3) AS targetCatalog
  118. , PARSENAME(SYN.base_object_name,2) AS targetSchema
  119. , PARSENAME(SYN.base_object_name,1) AS targetRef
  120. , '' description
  121. FROM sys.synonyms SYN, sys.schemas S
  122. WHERE SYN.schema_id = S.schema_id
  123. ORDER BY parentCatalog, parentSchema, synonymName
  124. </relmd:catalogGrainSql>
  125. <relmd:objectSelectionsInclusion relmd:sqlFragment="SYN.schema_id = S.schema_id" relmd:insertLocation="after" relmd:insertPrefix="AND">
  126. <relmd:objectSelectionsCondition relmd:schemaExpression="S.name" relmd:objectExpression="SYN.name"/>
  127. </relmd:objectSelectionsInclusion>
  128. </relmd:synonymsImportRules>
  129. <relmd:routinesImportRules>
  130. <relmd:catalogGrainSql>SELECT db_name() PARENTCATALOG, A.ROUTINE_SCHEMA PARENTSCHEMA, A.ROUTINE_NAME PROCEDURENAME, '' DESCRIPTION, CASE ROUTINE_TYPE WHEN 'FUNCTION' THEN 'F' ELSE 'P' END PROCEDURETYPE
  131. FROM INFORMATION_SCHEMA.ROUTINES A
  132. ORDER BY PARENTSCHEMA, PROCEDURENAME</relmd:catalogGrainSql>
  133. <relmd:objectSelectionsInclusion relmd:sqlFragment="FROM INFORMATION_SCHEMA.ROUTINES A" relmd:insertLocation="after" relmd:insertPrefix="WHERE">
  134. <relmd:objectSelectionsCondition relmd:schemaExpression="A.ROUTINE_SCHEMA" relmd:objectExpression="A.ROUTINE_NAME"/>
  135. </relmd:objectSelectionsInclusion>
  136. </relmd:routinesImportRules>
  137. <relmd:proceduresImportRules>
  138. <relmd:catalogGrainSql>SELECT db_name() PARENTCATALOG, A.ROUTINE_SCHEMA PARENTSCHEMA, A.ROUTINE_NAME PROCEDURENAME, '' DESCRIPTION, CASE WHEN A.ROUTINE_TYPE ='PROCEDURE' THEN 'P'ELSE A.ROUTINE_TYPE END ROUTINE_TYPE
  139. FROM INFORMATION_SCHEMA.ROUTINES A
  140. WHERE A.ROUTINE_TYPE ='PROCEDURE'
  141. ORDER BY PARENTSCHEMA, PROCEDURENAME</relmd:catalogGrainSql>
  142. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.ROUTINE_TYPE ='PROCEDURE'" relmd:insertLocation="after" relmd:insertPrefix="AND">
  143. <relmd:objectSelectionsCondition relmd:schemaExpression="A.ROUTINE_SCHEMA" relmd:objectExpression="A.ROUTINE_NAME"/>
  144. </relmd:objectSelectionsInclusion>
  145. </relmd:proceduresImportRules>
  146. <relmd:functionsImportRules>
  147. <relmd:catalogGrainSql>SELECT db_name() PARENTCATALOG, A.ROUTINE_SCHEMA PARENTSCHEMA, A.ROUTINE_NAME PROCEDURENAME, '' DESCRIPTION, CASE WHEN A.ROUTINE_TYPE ='FUNCTION' THEN 'F'ELSE A.ROUTINE_TYPE END ROUTINE_TYPE
  148. FROM INFORMATION_SCHEMA.ROUTINES A
  149. WHERE A.ROUTINE_TYPE ='FUNCTION'
  150. ORDER BY PARENTSCHEMA, PROCEDURENAME</relmd:catalogGrainSql>
  151. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.ROUTINE_TYPE ='FUNCTION'" relmd:insertLocation="after" relmd:insertPrefix="AND">
  152. <relmd:objectSelectionsCondition relmd:schemaExpression="A.ROUTINE_SCHEMA" relmd:objectExpression="A.ROUTINE_NAME"/>
  153. </relmd:objectSelectionsInclusion>
  154. </relmd:functionsImportRules>
  155. <relmd:routineArgumentsImportRules>
  156. <relmd:catalogGrainSql>(SELECT db_name() PARENTCATALOG, A.SPECIFIC_SCHEMA PARENTSCHEMA, A.SPECIFIC_NAME PARENTQUERYOBJECT, CASE A.PARAMETER_NAME WHEN '' THEN 'UNNAMED PARAMETER' WHEN NULL THEN 'UNNAMED PARAMETER' ELSE A.PARAMETER_NAME END PARAMETERNAME, A.DATA_TYPE DATATYPE, A.CHARACTER_MAXIMUM_LENGTH TEXTUALLENGTH, A.NUMERIC_PRECISION NUMERICPRECISION, A.NUMERIC_SCALE NUMERICSCALE, 'FALSE' NULLABLEFLAG, '' DEFAULTVALUE, A.COLLATION_NAME collationSequence, '' DESCRIPTION, 0 SIGNATUREINDEX, CASE A.IS_RESULT WHEN 'YES' THEN 'out' ELSE LOWER(A.PARAMETER_MODE) END PARAMETERMODE, '0' OCCURS, A.ORDINAL_POSITION PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION FROM INFORMATION_SCHEMA.PARAMETERS A, INFORMATION_SCHEMA.ROUTINES B
  157. WHERE A.SPECIFIC_CATALOG = B.SPECIFIC_CATALOG AND A.SPECIFIC_SCHEMA = B.SPECIFIC_SCHEMA AND A.SPECIFIC_NAME = B.SPECIFIC_NAME)
  158. UNION
  159. (SELECT db_name() PARENTCATALOG, A.TABLE_SCHEMA PARENTSCHEMA, A.TABLE_NAME PARENTQUERYOBJECT, A.COLUMN_NAME PARAMETERNAME, A.DATA_TYPE DATATYPE, A.CHARACTER_MAXIMUM_LENGTH TEXTUALLENGTH, A.NUMERIC_PRECISION NUMERICPRECISION, A.NUMERIC_SCALE NUMERICSCALE, CASE WHEN A.IS_NULLABLE = 'YES' THEN 'true' ELSE 'false' END NULLABLEFLAG, '' DEFAULTVALUE, A.COLLATION_NAME collationSequence, '' DESCRIPTION, 0 SIGNATUREINDEX, 'out' PARAMETERMODE, '0' OCCURS, A.ORDINAL_POSITION PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS A, INFORMATION_SCHEMA.ROUTINES B
  160. WHERE A.TABLE_CATALOG = B.SPECIFIC_CATALOG AND A.TABLE_SCHEMA = B.SPECIFIC_SCHEMA AND A.TABLE_NAME = B.SPECIFIC_NAME)
  161. UNION(
  162. SELECT db_name() PARENTCATALOG, C.ROUTINE_SCHEMA PARENTSCHEMA, C.ROUTINE_NAME PARENTQUERYOBJECT, '' PARAMETERNAME, '' DATATYPE, 0 TEXTUALLENGTH, 0 NUMERICPRECISION, 0 NUMERICSCALE, 'FALSE' NULLABLEFLAG, '' DEFAULTVALUE, '' collationSequence, '' DESCRIPTION, -1 SIGNATUREINDEX, 'emptyArgumentListPlacholder' PARAMETERMODE, '0' OCCURS, 0 PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION
  163. FROM INFORMATION_SCHEMA.ROUTINES C
  164. WHERE 0 = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS A WHERE A.TABLE_CATALOG = C.ROUTINE_CATALOG AND A.TABLE_SCHEMA = C.ROUTINE_SCHEMA AND A.TABLE_NAME = C.ROUTINE_NAME)
  165. AND 0 = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.PARAMETERS A WHERE A.SPECIFIC_CATALOG = C.SPECIFIC_CATALOG AND A.SPECIFIC_SCHEMA = C.SPECIFIC_SCHEMA AND A.SPECIFIC_NAME = C.SPECIFIC_NAME))
  166. ORDER BY PARENTSCHEMA, PARENTQUERYOBJECT, SIGNATUREINDEX, PARAMETERSEQUENCE, DATALEVEL, DATALEVELPOSITION</relmd:catalogGrainSql>
  167. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND A.SPECIFIC_NAME = B.SPECIFIC_NAME" relmd:insertLocation="after" relmd:insertPrefix="AND">
  168. <relmd:objectSelectionsCondition relmd:schemaExpression="A.SPECIFIC_SCHEMA" relmd:objectExpression="A.SPECIFIC_NAME"/>
  169. </relmd:objectSelectionsInclusion>
  170. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND A.TABLE_NAME = B.SPECIFIC_NAME" relmd:insertLocation="after" relmd:insertPrefix="AND">
  171. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME"/>
  172. </relmd:objectSelectionsInclusion>
  173. <relmd:objectSelectionsInclusion relmd:sqlFragment="A.SPECIFIC_NAME = C.SPECIFIC_NAME)" relmd:insertLocation="after" relmd:insertPrefix="AND">
  174. <relmd:objectSelectionsCondition relmd:schemaExpression="C.ROUTINE_SCHEMA" relmd:objectExpression="C.ROUTINE_NAME"/>
  175. </relmd:objectSelectionsInclusion>
  176. </relmd:routineArgumentsImportRules>
  177. <relmd:procedureRoutineArgusImportRules>
  178. <relmd:catalogGrainSql>(SELECT db_name() PARENTCATALOG, A.SPECIFIC_SCHEMA PARENTSCHEMA, A.SPECIFIC_NAME PARENTQUERYOBJECT, CASE A.PARAMETER_NAME WHEN '' THEN 'UNNAMED PARAMETER' WHEN NULL THEN 'UNNAMED PARAMETER' ELSE A.PARAMETER_NAME END PARAMETERNAME, A.DATA_TYPE DATATYPE, A.CHARACTER_MAXIMUM_LENGTH TEXTUALLENGTH, A.NUMERIC_PRECISION NUMERICPRECISION, A.NUMERIC_SCALE NUMERICSCALE, 'FALSE' NULLABLEFLAG, '' DEFAULTVALUE, A.COLLATION_NAME collationSequence, '' DESCRIPTION, 0 SIGNATUREINDEX, CASE A.IS_RESULT WHEN 'YES' THEN 'out' ELSE LOWER(A.PARAMETER_MODE) END PARAMETERMODE, '0' OCCURS, A.ORDINAL_POSITION PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION FROM INFORMATION_SCHEMA.PARAMETERS A, INFORMATION_SCHEMA.ROUTINES B
  179. WHERE A.SPECIFIC_CATALOG = B.SPECIFIC_CATALOG AND A.SPECIFIC_SCHEMA = B.SPECIFIC_SCHEMA AND A.SPECIFIC_NAME = B.SPECIFIC_NAME AND B.ROUTINE_TYPE ='PROCEDURE')
  180. UNION
  181. (SELECT db_name() PARENTCATALOG, A.TABLE_SCHEMA PARENTSCHEMA, A.TABLE_NAME PARENTQUERYOBJECT, A.COLUMN_NAME PARAMETERNAME, A.DATA_TYPE DATATYPE, A.CHARACTER_MAXIMUM_LENGTH TEXTUALLENGTH, A.NUMERIC_PRECISION NUMERICPRECISION, A.NUMERIC_SCALE NUMERICSCALE, CASE WHEN A.IS_NULLABLE = 'YES' THEN 'true' ELSE 'false' END NULLABLEFLAG, '' DEFAULTVALUE, A.COLLATION_NAME collationSequence, '' DESCRIPTION, 0 SIGNATUREINDEX, 'out' PARAMETERMODE, '0' OCCURS, A.ORDINAL_POSITION PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS A, INFORMATION_SCHEMA.ROUTINES B
  182. WHERE A.TABLE_CATALOG = B.SPECIFIC_CATALOG AND A.TABLE_SCHEMA = B.SPECIFIC_SCHEMA AND A.TABLE_NAME = B.SPECIFIC_NAME AND B.ROUTINE_TYPE ='PROCEDURE')
  183. UNION(
  184. SELECT db_name() PARENTCATALOG, C.ROUTINE_SCHEMA PARENTSCHEMA, C.ROUTINE_NAME PARENTQUERYOBJECT, '' PARAMETERNAME, '' DATATYPE, 0 TEXTUALLENGTH, 0 NUMERICPRECISION, 0 NUMERICSCALE, 'FALSE' NULLABLEFLAG, '' DEFAULTVALUE, '' collationSequence, '' DESCRIPTION, -1 SIGNATUREINDEX, 'emptyArgumentListPlacholder' PARAMETERMODE, '0' OCCURS, 0 PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION
  185. FROM INFORMATION_SCHEMA.ROUTINES C
  186. WHERE 0 = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS A WHERE A.TABLE_CATALOG = C.ROUTINE_CATALOG AND A.TABLE_SCHEMA = C.ROUTINE_SCHEMA AND A.TABLE_NAME = C.ROUTINE_NAME)
  187. AND 0 = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.PARAMETERS A WHERE A.SPECIFIC_CATALOG = C.SPECIFIC_CATALOG AND A.SPECIFIC_SCHEMA = C.SPECIFIC_SCHEMA AND A.SPECIFIC_NAME = C.SPECIFIC_NAME) AND C.ROUTINE_TYPE ='PROCEDURE')
  188. ORDER BY PARENTSCHEMA, PARENTQUERYOBJECT, SIGNATUREINDEX, PARAMETERSEQUENCE, DATALEVEL, DATALEVELPOSITION</relmd:catalogGrainSql>
  189. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND A.SPECIFIC_NAME = B.SPECIFIC_NAME" relmd:insertLocation="after" relmd:insertPrefix="AND">
  190. <relmd:objectSelectionsCondition relmd:schemaExpression="A.SPECIFIC_SCHEMA" relmd:objectExpression="A.SPECIFIC_NAME"/>
  191. </relmd:objectSelectionsInclusion>
  192. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND A.TABLE_NAME = B.SPECIFIC_NAME" relmd:insertLocation="after" relmd:insertPrefix="AND">
  193. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME"/>
  194. </relmd:objectSelectionsInclusion>
  195. <relmd:objectSelectionsInclusion relmd:sqlFragment="A.SPECIFIC_NAME = C.SPECIFIC_NAME)" relmd:insertLocation="after" relmd:insertPrefix="AND">
  196. <relmd:objectSelectionsCondition relmd:schemaExpression="C.ROUTINE_SCHEMA" relmd:objectExpression="C.ROUTINE_NAME"/>
  197. </relmd:objectSelectionsInclusion>
  198. </relmd:procedureRoutineArgusImportRules>
  199. <relmd:functionRoutineArgusImportRules>
  200. <relmd:catalogGrainSql>(SELECT db_name() PARENTCATALOG, A.SPECIFIC_SCHEMA PARENTSCHEMA, A.SPECIFIC_NAME PARENTQUERYOBJECT, CASE A.PARAMETER_NAME WHEN '' THEN 'UNNAMED PARAMETER' WHEN NULL THEN 'UNNAMED PARAMETER' ELSE A.PARAMETER_NAME END PARAMETERNAME, A.DATA_TYPE DATATYPE, A.CHARACTER_MAXIMUM_LENGTH TEXTUALLENGTH, A.NUMERIC_PRECISION NUMERICPRECISION, A.NUMERIC_SCALE NUMERICSCALE, 'FALSE' NULLABLEFLAG, '' DEFAULTVALUE, A.COLLATION_NAME collationSequence, '' DESCRIPTION, 0 SIGNATUREINDEX, CASE A.IS_RESULT WHEN 'YES' THEN 'out' ELSE LOWER(A.PARAMETER_MODE) END PARAMETERMODE, '0' OCCURS, A.ORDINAL_POSITION PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION FROM INFORMATION_SCHEMA.PARAMETERS A, INFORMATION_SCHEMA.ROUTINES B
  201. WHERE A.SPECIFIC_CATALOG = B.SPECIFIC_CATALOG AND A.SPECIFIC_SCHEMA = B.SPECIFIC_SCHEMA AND A.SPECIFIC_NAME = B.SPECIFIC_NAME AND B.ROUTINE_TYPE ='FUNCTION')
  202. UNION
  203. (SELECT db_name() PARENTCATALOG, A.TABLE_SCHEMA PARENTSCHEMA, A.TABLE_NAME PARENTQUERYOBJECT, A.COLUMN_NAME PARAMETERNAME, A.DATA_TYPE DATATYPE, A.CHARACTER_MAXIMUM_LENGTH TEXTUALLENGTH, A.NUMERIC_PRECISION NUMERICPRECISION, A.NUMERIC_SCALE NUMERICSCALE, CASE WHEN A.IS_NULLABLE = 'YES' THEN 'true' ELSE 'false' END NULLABLEFLAG, '' DEFAULTVALUE, A.COLLATION_NAME collationSequence, '' DESCRIPTION, 0 SIGNATUREINDEX, 'out' PARAMETERMODE, '0' OCCURS, A.ORDINAL_POSITION PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS A, INFORMATION_SCHEMA.ROUTINES B
  204. WHERE A.TABLE_CATALOG = B.SPECIFIC_CATALOG AND A.TABLE_SCHEMA = B.SPECIFIC_SCHEMA AND A.TABLE_NAME = B.SPECIFIC_NAME AND B.ROUTINE_TYPE ='FUNCTION')
  205. UNION(
  206. SELECT db_name() PARENTCATALOG, C.ROUTINE_SCHEMA PARENTSCHEMA, C.ROUTINE_NAME PARENTQUERYOBJECT, '' PARAMETERNAME, '' DATATYPE, 0 TEXTUALLENGTH, 0 NUMERICPRECISION, 0 NUMERICSCALE, 'FALSE' NULLABLEFLAG, '' DEFAULTVALUE, '' collationSequence, '' DESCRIPTION, -1 SIGNATUREINDEX, 'emptyArgumentListPlacholder' PARAMETERMODE, '0' OCCURS, 0 PARAMETERSEQUENCE, 0 DATALEVEL, 0 DATALEVELPOSITION
  207. FROM INFORMATION_SCHEMA.ROUTINES C
  208. WHERE 0 = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS A WHERE A.TABLE_CATALOG = C.ROUTINE_CATALOG AND A.TABLE_SCHEMA = C.ROUTINE_SCHEMA AND A.TABLE_NAME = C.ROUTINE_NAME)
  209. AND 0 = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.PARAMETERS A WHERE A.SPECIFIC_CATALOG = C.SPECIFIC_CATALOG AND A.SPECIFIC_SCHEMA = C.SPECIFIC_SCHEMA AND A.SPECIFIC_NAME = C.SPECIFIC_NAME) AND C.ROUTINE_TYPE ='FUNCTION')
  210. ORDER BY PARENTSCHEMA, PARENTQUERYOBJECT, SIGNATUREINDEX, PARAMETERSEQUENCE, DATALEVEL, DATALEVELPOSITION</relmd:catalogGrainSql>
  211. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND A.SPECIFIC_NAME = B.SPECIFIC_NAME" relmd:insertLocation="after" relmd:insertPrefix="AND">
  212. <relmd:objectSelectionsCondition relmd:schemaExpression="A.SPECIFIC_SCHEMA" relmd:objectExpression="A.SPECIFIC_NAME"/>
  213. </relmd:objectSelectionsInclusion>
  214. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND A.TABLE_NAME = B.SPECIFIC_NAME" relmd:insertLocation="after" relmd:insertPrefix="AND">
  215. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME"/>
  216. </relmd:objectSelectionsInclusion>
  217. <relmd:objectSelectionsInclusion relmd:sqlFragment="A.SPECIFIC_NAME = C.SPECIFIC_NAME)" relmd:insertLocation="after" relmd:insertPrefix="AND">
  218. <relmd:objectSelectionsCondition relmd:schemaExpression="C.ROUTINE_SCHEMA" relmd:objectExpression="C.ROUTINE_NAME"/>
  219. </relmd:objectSelectionsInclusion>
  220. </relmd:functionRoutineArgusImportRules>
  221. <relmd:sqlObjectImportRules>
  222. <relmd:catalogGrainSql>(SELECT db_name() AS parentCatalog, A.TABLE_SCHEMA AS parentSchema, A.TABLE_NAME AS objectName
  223. , CASE WHEN A.TABLE_TYPE ='VIEW' THEN 'V' WHEN A.TABLE_TYPE ='BASE TABLE' THEN 'T' ELSE A.TABLE_TYPE END objectType
  224. , '' AS exteralHostRef, '' AS targetCatalog, '' AS targetSchema, '' AS targetRef, '' AS targetType, '' AS description
  225. FROM INFORMATION_SCHEMA.TABLES A
  226. UNION
  227. SELECT db_name() AS parentCatalog, S.name AS parentSchema, SYN.name AS objectName, 'S' objectType
  228. , CASE LTRIM(RTRIM(UPPER(PARSENAME(SYN.base_object_name,4))))
  229. WHEN NULL THEN NULL
  230. WHEN LTRIM(RTRIM(CONVERT(NVARCHAR(1024), SERVERPROPERTY('ServerName')))) THEN NULL
  231. ELSE UPPER(PARSENAME(SYN.base_object_name,4))
  232. END AS externalHostRef
  233. , PARSENAME(SYN.base_object_name,3) AS targetCatalog
  234. , PARSENAME(SYN.base_object_name,2) AS targetSchema
  235. , PARSENAME(SYN.base_object_name,1) AS targetRef
  236. , '' AS targetType
  237. , '' AS description
  238. FROM sys.synonyms SYN, sys.schemas S
  239. WHERE SYN.schema_id = S.schema_id)
  240. ORDER BY parentSchema, objectName</relmd:catalogGrainSql>
  241. <relmd:objectSelectionsInclusion relmd:sqlFragment="FROM INFORMATION_SCHEMA.TABLES A" relmd:insertLocation="after" relmd:insertPrefix="WHERE">
  242. <relmd:objectSelectionsCondition relmd:schemaExpression="A.TABLE_SCHEMA" relmd:objectExpression="A.TABLE_NAME"/>
  243. </relmd:objectSelectionsInclusion>
  244. <relmd:objectSelectionsInclusion relmd:sqlFragment="SYN.schema_id = S.schema_id" relmd:insertLocation="after" relmd:insertPrefix="AND">
  245. <relmd:objectSelectionsCondition relmd:schemaExpression="S.name" relmd:objectExpression="SYN.name"/>
  246. </relmd:objectSelectionsInclusion>
  247. </relmd:sqlObjectImportRules>
  248. <relmd:catalogsBrowseRules>
  249. <relmd:sql>
  250. SELECT A.CATALOG_NAME objectName, '' description
  251. FROM INFORMATION_SCHEMA.SCHEMATA A
  252. GROUP BY A.CATALOG_NAME
  253. ORDER BY objectName
  254. </relmd:sql>
  255. <relmd:systemObjectFilter relmd:insertLocation="after" relmd:sqlFragment="FROM INFORMATION_SCHEMA.SCHEMATA A" relmd:insertPrefix="WHERE" relmd:objectExpression="A.CATALOG_NAME">
  256. <relmd:systemObject relmd:name="master"/>
  257. </relmd:systemObjectFilter>
  258. </relmd:catalogsBrowseRules>
  259. <relmd:schemasBrowseRules>
  260. <relmd:catalogGrainSql>
  261. SELECT DISTINCT A.TABLE_SCHEMA objectName, '' description
  262. FROM INFORMATION_SCHEMA.TABLES A
  263. WHERE A.TABLE_CATALOG = N'<relmd:catalogSubstitution/>'
  264. GROUP BY A.TABLE_SCHEMA
  265. ORDER BY objectName
  266. </relmd:catalogGrainSql>
  267. <relmd:systemObjectFilter relmd:insertLocation="before" relmd:sqlFragment="GROUP BY A.TABLE_SCHEMA" relmd:insertPrefix="AND" relmd:objectExpression="A.TABLE_SCHEMA">
  268. <relmd:systemObject relmd:name="sys"/>
  269. <relmd:systemObject relmd:name="db_securityadmin"/>
  270. <relmd:systemObject relmd:name="db_owner"/>
  271. <relmd:systemObject relmd:name="db_denydatawriter"/>
  272. <relmd:systemObject relmd:name="db_denydatareader"/>
  273. <relmd:systemObject relmd:name="db_ddladmin"/>
  274. <relmd:systemObject relmd:name="db_datawriter"/>
  275. <relmd:systemObject relmd:name="db_datareader"/>
  276. <relmd:systemObject relmd:name="db_backupoperator"/>
  277. <relmd:systemObject relmd:name="db_accessadmin"/>
  278. <relmd:systemObject relmd:name="INFORMATION_SCHEMA"/>
  279. <relmd:systemObject relmd:name="guest"/>
  280. </relmd:systemObjectFilter>
  281. </relmd:schemasBrowseRules>
  282. <relmd:tablesBrowseRules>
  283. <relmd:schemaGrainSql>
  284. SELECT A.TABLE_NAME objectName , '' DESCRIPTION
  285. FROM INFORMATION_SCHEMA.TABLES A
  286. WHERE A.TABLE_CATALOG = N'<relmd:catalogSubstitution/>'
  287. AND A.TABLE_SCHEMA = N'<relmd:schemaSubstitution/>'
  288. AND A.TABLE_TYPE != 'VIEW'
  289. ORDER BY objectName
  290. </relmd:schemaGrainSql>
  291. <relmd:systemObjectFilter relmd:insertLocation="after" relmd:sqlFragment="AND A.TABLE_TYPE != 'VIEW'" relmd:insertPrefix="AND" relmd:objectExpression="A.TABLE_NAME">
  292. <relmd:systemObject relmd:name="sysconstraints"/>
  293. <relmd:systemObject relmd:name="syssegments"/>
  294. <relmd:systemObject relmd:name="dtproperties"/>
  295. <relmd:systemObject relmd:name="sysdiagrams"/>
  296. </relmd:systemObjectFilter>
  297. </relmd:tablesBrowseRules>
  298. <relmd:viewsBrowseRules>
  299. <relmd:schemaGrainSql>
  300. SELECT A.TABLE_NAME objectName , '' description
  301. FROM INFORMATION_SCHEMA.TABLES A
  302. WHERE A.TABLE_CATALOG = N'<relmd:catalogSubstitution/>'
  303. AND A.TABLE_SCHEMA = N'<relmd:schemaSubstitution/>'
  304. AND A.TABLE_TYPE = 'VIEW'
  305. ORDER BY objectName
  306. </relmd:schemaGrainSql>
  307. </relmd:viewsBrowseRules>
  308. <relmd:columnsBrowseRules>
  309. <relmd:objectGrainSql>
  310. SELECT A.COLUMN_NAME objectName, '' description
  311. FROM INFORMATION_SCHEMA.COLUMNS A
  312. WHERE A.TABLE_CATALOG = N'<relmd:catalogSubstitution/>'
  313. AND A.TABLE_SCHEMA = N'<relmd:schemaSubstitution/>'
  314. AND A.TABLE_NAME = N'<relmd:objectSubstitution/>'
  315. ORDER BY A.ORDINAL_POSITION
  316. </relmd:objectGrainSql>
  317. </relmd:columnsBrowseRules>
  318. <relmd:synonymsBrowseRules>
  319. <relmd:schemaGrainSql>
  320. SELECT distinct SYN.name AS synonymName, '' description
  321. FROM sys.synonyms SYN, sys.database_principals P, sys.databases D, sys.schemas S
  322. WHERE SYN.schema_id = S.schema_id
  323. AND D.name = N'<relmd:catalogSubstitution/>'
  324. AND S.name = N'<relmd:schemaSubstitution/>'
  325. ORDER BY synonymName
  326. </relmd:schemaGrainSql>
  327. </relmd:synonymsBrowseRules>
  328. <relmd:proceduresBrowseRules>
  329. <relmd:schemaGrainSql>
  330. SELECT A.ROUTINE_NAME objectName, '' description
  331. FROM INFORMATION_SCHEMA.ROUTINES A
  332. WHERE A.ROUTINE_CATALOG = N'<relmd:catalogSubstitution/>'
  333. AND A.ROUTINE_SCHEMA = N'<relmd:schemaSubstitution/>'
  334. AND A.ROUTINE_TYPE != 'FUNCTION'
  335. ORDER BY objectName
  336. </relmd:schemaGrainSql>
  337. <relmd:systemObjectFilter relmd:insertLocation="after" relmd:sqlFragment="A.ROUTINE_TYPE != 'FUNCTION'" relmd:insertPrefix="AND" relmd:objectExpression="A.ROUTINE_NAME">
  338. <relmd:systemObject relmd:name="dt_addtosourcecontrol"/>
  339. <relmd:systemObject relmd:name="dt_addtosourcecontrol_u"/>
  340. <relmd:systemObject relmd:name="dt_adduserobject"/>
  341. <relmd:systemObject relmd:name="dt_adduserobject_vcs"/>
  342. <relmd:systemObject relmd:name="dt_checkinobject"/>
  343. <relmd:systemObject relmd:name="dt_checkinobject_u"/>
  344. <relmd:systemObject relmd:name="dt_checkoutobject"/>
  345. <relmd:systemObject relmd:name="dt_checkoutobject_u"/>
  346. <relmd:systemObject relmd:name="dt_displayoaerror"/>
  347. <relmd:systemObject relmd:name="dt_displayoaerror_u"/>
  348. <relmd:systemObject relmd:name="dt_droppropertiesbyid"/>
  349. <relmd:systemObject relmd:name="dt_dropuserobjectbyid"/>
  350. <relmd:systemObject relmd:name="dt_generateansiname"/>
  351. <relmd:systemObject relmd:name="dt_getobjwithprop"/>
  352. <relmd:systemObject relmd:name="dt_getobjwithprop_u"/>
  353. <relmd:systemObject relmd:name="dt_getpropertiesbyid"/>
  354. <relmd:systemObject relmd:name="dt_getpropertiesbyid_u"/>
  355. <relmd:systemObject relmd:name="dt_getpropertiesbyid_vcs"/>
  356. <relmd:systemObject relmd:name="dt_getpropertiesbyid_vcs_u"/>
  357. <relmd:systemObject relmd:name="dt_isundersourcecontrol"/>
  358. <relmd:systemObject relmd:name="dt_isundersourcecontrol_u"/>
  359. <relmd:systemObject relmd:name="dt_removefromsourcecontrol"/>
  360. <relmd:systemObject relmd:name="dt_setpropertybyid"/>
  361. <relmd:systemObject relmd:name="dt_setpropertybyid_u"/>
  362. <relmd:systemObject relmd:name="dt_validateloginparams"/>
  363. <relmd:systemObject relmd:name="dt_validateloginparams_u"/>
  364. <relmd:systemObject relmd:name="dt_vcsenabled"/>
  365. <relmd:systemObject relmd:name="dt_verstamp006"/>
  366. <relmd:systemObject relmd:name="dt_verstamp007"/>
  367. <relmd:systemObject relmd:name="dt_whocheckedout"/>
  368. <relmd:systemObject relmd:name="dt_whocheckedout_u"/>
  369. <relmd:systemObject relmd:name="sp_alterdiagram"/>
  370. <relmd:systemObject relmd:name="sp_creatediagram"/>
  371. <relmd:systemObject relmd:name="sp_dropdiagram"/>
  372. <relmd:systemObject relmd:name="sp_helpdiagramdefinition"/>
  373. <relmd:systemObject relmd:name="sp_helpdiagrams"/>
  374. <relmd:systemObject relmd:name="sp_renamediagram"/>
  375. <relmd:systemObject relmd:name="sp_upgraddiagrams"/>
  376. </relmd:systemObjectFilter>
  377. </relmd:proceduresBrowseRules>
  378. <relmd:functionsBrowseRules>
  379. <relmd:schemaGrainSql>
  380. SELECT A.ROUTINE_NAME objectName, '' description
  381. FROM INFORMATION_SCHEMA.ROUTINES A
  382. WHERE A.ROUTINE_CATALOG = N'<relmd:catalogSubstitution/>'
  383. AND A.ROUTINE_SCHEMA = N'<relmd:schemaSubstitution/>'
  384. AND A.ROUTINE_TYPE = 'FUNCTION'
  385. ORDER BY objectName
  386. </relmd:schemaGrainSql>
  387. <relmd:systemObjectFilter relmd:insertLocation="after" relmd:sqlFragment="AND A.ROUTINE_TYPE = 'FUNCTION'" relmd:insertPrefix="AND" relmd:objectExpression="A.ROUTINE_NAME">
  388. <relmd:systemObject relmd:name="fn_diagramobjects"/>
  389. </relmd:systemObjectFilter>
  390. </relmd:functionsBrowseRules>
  391. <relmd:objectListingsRules>
  392. <relmd:sql>(SELECT A.TABLE_CATALOG "parentCatalog", A.TABLE_SCHEMA "parentSchema", A.TABLE_NAME "objectName"
  393. , CASE WHEN A.TABLE_TYPE ='VIEW' THEN 'V' WHEN A.TABLE_TYPE ='BASE TABLE' THEN 'T' ELSE A.TABLE_TYPE END "objectType"
  394. , '' "description"
  395. FROM INFORMATION_SCHEMA.TABLES A )
  396. UNION
  397. (SELECT A.ROUTINE_CATALOG "parentCatalog", A.ROUTINE_SCHEMA "parentSchema", A.ROUTINE_NAME "objectName"
  398. , CASE ROUTINE_TYPE WHEN 'FUNCTION' THEN 'F' ELSE 'P' END PROCEDURETYPE, '' "description"
  399. FROM INFORMATION_SCHEMA.ROUTINES A)
  400. UNION
  401. (SELECT D.name AS parentCatalog, S.name AS parentSchema, SYN.name AS objectName,'S' objectType, '' description
  402. FROM sys.synonyms SYN, sys.database_principals P, sys.databases D, sys.schemas S
  403. WHERE P.name = D.name AND SYN.schema_id = S.schema_id)
  404. ORDER BY parentCatalog, parentSchema, objectName</relmd:sql>
  405. </relmd:objectListingsRules>
  406. <relmd:driverClass relmd:className="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
  407. </relmd:vendorRules>