2017-10-25 15 views
-2

Microsoft SQL Server Management Studioを使用しています。私は、特定の名前を持つビューまたはテーブルの場所を探したい:vw_found、これは多くのデータベースを含むサーバーでこれ。複数のデータベースで特定の名前のビュー、テーブルを検索

あなたが私を助けてくれることを願っています。私は、このためのSQL検索を使用

+0

。 (https://www.red-gate.com/products/sql-development/sql-search/index) – pinegulf

+0

https://www.google.com/search?q=how+to+find+a+sql+サーバー+テーブル+ or +ビュー+ by + name + in + all +データベース&oq = how + to + find + a + sql + server + table + or + view + by + name + in + all + databases&gs_l = psy- 3 ... 5810.7945.0.8184.17.11.0.0.0.0.476.1676.0j1j1j1j2.5.0 .... 0 ... 1.1.64.psy-ab..12.3.1035 ... 33i160k1j33i21k1.0.uqW3Dgw71Xc –

答えて

0

sp_MSforeachdb

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; SELECT DB_NAME(), * FROM sys.objects WHERE Name = ''vw_found''' 
0
BEGIN 

DECLARE @CurrentDatabaseId INT = 0 
DECLARE @MaxDatabaseId INT = (SELECT 
     MAX(database_id) 
    FROM sys.databases d) 
DECLARE @CheckTableName VARCHAR(100) = '<TableName>' 
DECLARE @CheckSchemaName VARCHAR(100) = '<SchemaName>' 

WHILE @MaxDatabaseId >= @CurrentDatabaseId 
BEGIN 

    IF EXISTS (SELECT 
       * 
      FROM sys.databases d 
      WHERE d.database_id = @CurrentDatabaseId) 
    BEGIN 
     DECLARE @CurrentDBName VARCHAR(100); 
     DECLARE @Sql NVARCHAR(MAX); 
     DECLARE @RowCount INT; 

     SELECT 
      @CurrentDBName = d.name 
     FROM sys.databases d 
     WHERE d.database_id = @CurrentDatabaseId 

     SET @Sql = 'SELECT @RowCnt = COUNT(*) FROM ' + @CurrentDBName + '.INFORMATION_SCHEMA.TABLES t WHERE t.TABLE_SCHEMA = ''' + @CheckSchemaName + '''' + ' AND t.TABLE_NAME = ''' + @CheckTableName + '''' 

     EXEC sp_executesql @Sql, N'@RowCnt INT OUTPUT', @RowCnt= @RowCount OUTPUT 

     IF @RowCount > 0 
     BEGIN 
      PRINT 'Table : ' + @CheckTableName + ' Exists in Database :' + @CurrentDBName 
     END 
    END 

    SET @CurrentDatabaseId = @CurrentDatabaseId + 1 

END END 
関連する問題