Yeah, I know, who would ever want to do that (!) but the purpose of this post is not to illustrate how you can actually get all the records from all tables in all user databases (even though it shows how to do it) but rather to provide an example of how we can dynamically generate T-SQL statements that can be used for undertaking various multi-database operations.
— — Dynamically builds T-SQL statements for retrieving all the records — from all the tables in all user databases — — SQL Server versions supported: SQL Server 2000 or later — exec sp_MSforeachdb @command1=”IF DB_ID(‘?’) > 4 print ‘use ?;'”, @command2=”IF DB_ID(‘?’) > 4 SELECT ‘SELECT * FROM [‘+TABLE_SCHEMA+’.’+TABLE_NAME+’]’ FROM ?.INFORMATION_SCHEMA.TABLES”
In Query Window in SSMS, right click – Results To: Results to Text
Run the above query and you will get “SELECT *” statements for each column of each table in each user database (Database ID > 4). By executing the produced code you get all the data records.
*Note: I could directly execute the produced code but when you run multi-database operations, it is wiser to first review the SQL statements, hey, you never know! 🙂
Artemakis Artemiou is a Senior SQL Server Architect, Author, Software Developer and a Microsoft Data Platform MVP. He has over 15 years of experience in the IT industry in various roles. Among other, via his initiative SQLEBooks.com, Artemakis authors and publishes eBooks on different topics on SQL Server. Artemakis currently serves as the President of the Cyprus .NET User Group (CDNUG) and the International .NET Association Country Leader for Cyprus (INETA). Additionally he is the founder of the SQLArtBits initiative that aims to provide the technical community with simple, yet powerful and high-quality SQL Server tools. Currently, the highlights of these tools are DBA Security Advisor and In-Memory OLTP Simulator. Artemakis's official website can be found at aartemiou.com. Artemakis's blogs can be found at: SQLNetHub.com and TechHowTos.com.