Guest User

Untitled

a guest
Mar 17th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. CREATE TABLE #LIst_DB (name nvarchar(128))
  2.  
  3. INSERT INTO #LIst_DB
  4.  
  5. select name from sys.databases
  6. WHERE database_id > 4
  7. AND state = 0;
  8.  
  9. select * from #LIst_DB
  10.  
  11. DROP TABLE #LIst_DB
  12.  
  13. DECLARE @SQL NVARCHAR(max)
  14.  
  15. SET @SQL = stuff((
  16. SELECT '
  17. UNION
  18. SELECT ' + quotename(NAME, '''') + ' as Db_Name, Name collate SQL_Latin1_General_CP1_CI_AS as Table_Name
  19. FROM ' + quotename(NAME) + '.sys.tables WHERE NAME = @TableName '
  20. FROM sys.databases
  21. ORDER BY NAME
  22. FOR XML PATH('')
  23. ,type
  24. ).value('.', 'nvarchar(max)'), 1, 8, '')
  25.  
  26. --PRINT @SQL;
  27.  
  28. EXECUTE sp_executeSQL @SQL
  29. ,N'@TableName varchar(30)'
  30. ,@TableName = 'AWBuildVersion'
  31.  
  32. -- The table to find
  33. DECLARE @find nvarchar(257) = N'dbo.AWBuildVersion';
  34.  
  35. -- Holds results
  36. DECLARE @results table
  37. (
  38. [Db_Name] sysname PRIMARY KEY,
  39. [Database Version] nvarchar(25) NOT NULL
  40. );
  41.  
  42. -- Current database
  43. DECLARE @db sysname;
  44.  
  45. -- AdventureWorks databases cursor
  46. DECLARE dbs CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR
  47. SELECT D.[name]
  48. FROM sys.databases AS D
  49. WHERE
  50. D.[name] LIKE N'AdventureWorks%'
  51. AND D.state_desc = N'ONLINE'
  52. AND DATABASEPROPERTYEX(D.[name], 'Collation') IS NOT NULL
  53. ORDER BY
  54. D.[name];
  55.  
  56. OPEN dbs;
  57.  
  58. WHILE 1 = 1
  59. BEGIN
  60. -- Next database
  61. FETCH dbs INTO @db;
  62. IF @@FETCH_STATUS = -1 BREAK;
  63.  
  64. -- Find [Database Version] if @find table exists
  65. INSERT @results ([Db_Name], [Database Version])
  66. EXECUTE sys.sp_executesql
  67. N'
  68. -- Construct 3-part object name
  69. DECLARE @object nvarchar(386) =
  70. QUOTENAME(@db) + N''.'' +
  71. ISNULL(QUOTENAME(PARSENAME(@find, 2)), '''') + N''.'' +
  72. QUOTENAME(PARSENAME(@find, 1));
  73.  
  74. -- Query to find [Database Version]
  75. DECLARE @sql nvarchar(max) = N''
  76. SELECT
  77. Db_Name = '''''' + @db + ''''''
  78. [Database Version]
  79. FROM '' + @object;
  80.  
  81. IF OBJECT_ID(@object, N''U'') IS NOT NULL
  82. EXECUTE (@sql)',
  83. N'@db sysname, @find nvarchar(257)',
  84. @db = @db, @find = @find;
  85. END;
  86.  
  87. CLOSE dbs; DEALLOCATE dbs;
  88.  
  89. SELECT
  90. R.[Db_Name],
  91. [Table_Name] = @find,
  92. R.[Database Version]
  93. FROM @results AS R
  94. ORDER BY
  95. R.[Db_Name];
  96.  
  97. EXEC dbo.sp_foreachDB @command1 = 'select [Database Version] from dbo.AWBuildVersion',
  98. @name_pattern = 'AdventureWorks%'
Add Comment
Please, Sign In to add comment