예 당신이 그런 식으로 작업을 수행 할 수 있습니다
USE tempdb
IF OBJECT_ID(N'#temp') IS NOT NULL DROP TABLE #temp
CREATE TABLE #temp (
TableName nvarchar(max),
MaxEventDateTime datetime
)
USE YourDatabaseName
INSERT INTO #temp
exec sp_MSforeachtable 'SELECT ''?'', MAX([EventDateTime]) FROM ?'
SELECT *
FROM #temp
참고 : sp_MSforeachtable
이 저장 프로 시저를 문서화하고 내가 중요 생산 공정에 그것을 사용하지 않는 것이 좋습니다.
난 당신에게 동적 SQL 솔루션을 제안 :
USE tempdb
IF OBJECT_ID(N'#temp') IS NOT NULL DROP TABLE #temp
CREATE TABLE #temp (
TableName nvarchar(max),
MaxEventDateTime INT
)
USE YourDatabaseName
DECLARE @sql nvarchar(max)
SELECT @sql = (
SELECT 'INSERT INTO #temp SELECT '''+[name]+''', MAX([EventDateTime]) FROM '+QUOTENAME([name])+';'+CHAR(10)
FROM sys.tables
FOR XML PATH('')
)
--PRINT @sql
EXEC sp_executesql @SQL
PRINT @sql
은이 같은 쿼리 나타납니다 :
USE [Test] INSERT INTO #temp SELECT 'TABLE_A', COUNT(*) FROM [TABLE_A];
USE [Test] INSERT INTO #temp SELECT 'TABLE_B', COUNT(*) FROM [TABLE_B];
USE [Test] INSERT INTO #temp SELECT 'TestXml', COUNT(*) FROM [TestXml];
USE [Test] INSERT INTO #temp SELECT 'Clients', COUNT(*) FROM [Clients];
I 조언 당신은 동적 SQL 솔루션을 사용 할 수 있습니다.
나는 작은 데이터베이스에서 위대한 작품을 처음 만들 것이라고 확신하지만, 그 중 하나는 내가 함께 작업 한 것으로 보인다. – DataMan31
두 번째 것은 13.5 줄 뒤에 잘라내는 것처럼 보입니다.이 줄은 nvarchar (max)의 크기가 다소 어리석은 것 같습니다. 내가 염려하는 유일한 것은이 개념이 전체 데이터베이스 스캔을 수행해야한다는 것입니다. 제 경우에는 그것을 완전히 쓸모 없게 만들 것입니다. – DataMan31
@ DataMan31'PRINT' 때문에 13,5 줄이 생기면'select @sql (