sql >> データベース >  >> RDS >> Sqlserver

インスタンス上のすべてのデータベースで同じクエリを実行するにはどうすればよいですか?

    これを試してください-

        SET NOCOUNT ON;
        
        IF OBJECT_ID (N'tempdb.dbo.#temp') IS NOT NULL
           DROP TABLE #temp
        
        CREATE TABLE #temp
        (
              [COUNT] INT
            , DB VARCHAR(50)
        )
        
        DECLARE @TableName NVARCHAR(50) 
        SELECT @TableName = '[dbo].[CUSTOMERS]'
        
        DECLARE @SQL NVARCHAR(MAX)
        SELECT @SQL = STUFF((
            SELECT CHAR(13) + 'SELECT ' + QUOTENAME(name, '''') + ', COUNT(1) FROM ' + QUOTENAME(name) + '.' + QUOTENAME(@TableName)
            FROM sys.databases 
            WHERE OBJECT_ID(QUOTENAME(name) + '.' + QUOTENAME(@TableName)) IS NOT NULL
            FOR XML PATH(''), TYPE).value('text()[1]', 'NVARCHAR(MAX)'), 1, 1, '')
        
        INSERT INTO #temp (DB, [COUNT])              
        EXEC sys.sp_executesql @SQL
        
        SELECT * 
        FROM #temp t
    

    出力(たとえば、AdventureWorks )-

    COUNT       DB
    ----------- --------------------------------------------------
    19972       AdventureWorks2008R2
    19975       AdventureWorks2012
    19472       AdventureWorks2008R2_Live
    


    1. 2つの数値の間の数値の範囲を生成するにはどうすればよいですか?

    2. postgresql:md5メッセージダイジェストのデータ型?

    3. OracleのCHR()関数

    4. T-SQL:電子メール形式のチェック