Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để liệt kê tất cả các bảng trong tất cả các cơ sở dữ liệu trong SQL Server trong một tập hợp kết quả?

để có một cách đơn giản để lấy tất cả các bảng trên máy chủ, hãy thử cách này:

SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName nvarchar(4000))
INSERT INTO @AllTables (CompleteTableName)
    EXEC sp_msforeachdb 'select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id'
SET NOCOUNT OFF
SELECT * FROM @AllTables ORDER BY 1

nó sẽ trả về một cột duy nhất chứa máy chủ + cơ sở dữ liệu + lược đồ + tên bảng:đầu ra mẫu:

CompleteTableName
--------------------------------------------
YourServer.YourDatabase1.YourSchema1.YourTable1
YourServer.YourDatabase1.YourSchema1.YourTable2
YourServer.YourDatabase1.YourSchema2.YourTable1
YourServer.YourDatabase1.YourSchema2.YourTable2
YourServer.YourDatabase2.YourSchema1.YourTable1

nếu bạn không sử dụng SQL Server 2005 trở lên, hãy thay thế bảng DECLARE @AllTables table với CREATE TABLE #AllTables và sau đó mọi @AllTables với #AllTables và nó sẽ hoạt động.

CHỈNH SỬA
đây là phiên bản cho phép sử dụng tham số tìm kiếm trên bất kỳ phần nào hoặc các phần của máy chủ + cơ sở dữ liệu + lược đồ + tên bảng:

SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName nvarchar(4000))
DECLARE @Search nvarchar(4000)
       ,@SQL   nvarchar(4000)
SET @Search=null --all rows
SET @SQL='select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id WHERE @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name LIKE ''%'+ISNULL(@SEARCH,'')+'%'''

INSERT INTO @AllTables (CompleteTableName)
    EXEC sp_msforeachdb @SQL
SET NOCOUNT OFF
SELECT * FROM @AllTables ORDER BY 1

đặt @Search thành NULL cho tất cả các bảng, đặt nó thành những thứ như 'dbo.users' hoặc 'users' hoặc '.master.dbo' hoặc thậm chí bao gồm các ký tự đại diện như '.master.%. u', v.v.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu là gì, Tại sao lại là Cơ sở dữ liệu?

  2. Làm cách nào để tìm thư mục dữ liệu cho phiên bản SQL Server?

  3. Tôi có thể kết nối với SQL Server bằng Xác thực Windows từ ứng dụng web Java EE không?

  4. Chỉ thực thi một trình kích hoạt khi một số cột nhất định được cập nhật (Máy chủ SQL)

  5. Làm cách nào để xem toàn bộ nội dung của cột văn bản hoặc varchar (MAX) trong SQL Server 2008 Management Studio?