Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. declare @sql nvarchar(4000)
  2. set @sql =
  3. 'IF EXISTS (SELECT * FROM sys.databases WHERE name = ''?'' AND compatibility_level >= 90)
  4. BEGIN
  5. USE ['+'?'+'] ;
  6. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  7. SET QUOTED_IDENTIFIER ON
  8. DECLARE @dbname SYSNAME
  9. SET @dbname = QUOTENAME(DB_NAME())
  10.  
  11. BEGIN TRY
  12. RAISERROR(''?'', 0, 42) WITH NOWAIT;
  13. WITH XMLNAMESPACES
  14. (DEFAULT ''http://schemas.microsoft.com/sqlserver/2004/07/showplan'')
  15. INSERT INTO DMTAdmin.dbo.BestPractices_ImplicitConversions
  16. SELECT
  17. GETDATE(),
  18. @dbname,
  19. stmt.value(''(@StatementText)[1]'', ''varchar(max)''),
  20. t.value(''(ScalarOperator/Identifier/ColumnReference/@Schema)[1]'', ''varchar(128)''),
  21. t.value(''(ScalarOperator/Identifier/ColumnReference/@Table)[1]'', ''varchar(128)''),
  22. t.value(''(ScalarOperator/Identifier/ColumnReference/@Column)[1]'', ''varchar(128)''),
  23. ic.DATA_TYPE AS ConvertFrom,
  24. ic.CHARACTER_MAXIMUM_LENGTH AS ConvertFromLength,
  25. t.value(''(@DataType)[1]'', ''varchar(128)'') AS ConvertTo,
  26. t.value(''(@Length)[1]'', ''int'') AS ConvertToLength,
  27. query_plan
  28. FROM sys.dm_exec_cached_plans AS cp
  29. CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS qp
  30. CROSS APPLY query_plan.nodes(''/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple'') AS batch(stmt)
  31. CROSS APPLY stmt.nodes(''.//Convert[@Implicit="1"]'') AS n(t)
  32. JOIN INFORMATION_SCHEMA.COLUMNS AS ic
  33. ON QUOTENAME(ic.TABLE_SCHEMA) = t.value(''(ScalarOperator/Identifier/ColumnReference/@Schema)[1]'', ''varchar(128)'')
  34. AND QUOTENAME(ic.TABLE_NAME) = t.value(''(ScalarOperator/Identifier/ColumnReference/@Table)[1]'', ''varchar(128)'')
  35. AND ic.COLUMN_NAME = t.value(''(ScalarOperator/Identifier/ColumnReference/@Column)[1]'', ''varchar(128)'')
  36. WHERE t.exist(''ScalarOperator/Identifier/ColumnReference[@Database=sql:variable("@dbname")][@Schema!="[sys]"]'') = 1
  37. END TRY
  38. BEGIN CATCH
  39. END CATCH;
  40. END
  41. '
  42.  
  43. exec sp_msforeachdb @sql
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement