SQLServer之查詢當前服務器下全部目錄視圖表

SQL腳本

/*************1:刪除臨時表*************/
if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempTable'))
	drop table #tempTable;

/*************2:定義遊標*************/
declare databaseNameCursor cursor for select name from master.dbo.SysDatabases;
declare @databaseName nvarchar(512),@databaseCount int;
set @databaseCount=(select count(1) from master.dbo.SysDatabases);

/*************3:打開遊標*************/
open databaseNameCursor;

/*************4:鏈接遊標*************/
fetch next from databaseNameCursor into @databaseName

/*************5:建立臨時表*************/
create table #tempTable
(
id int identity(1,1) not null,
databasename nvarchar(max),
schemaname nvarchar(max),
tablename nvarchar(max),
primary key(id)
);

/************6:循環插入臨時表中*************/
while (@@fetch_status=0 and @databaseCount>0)
	begin 
	    begin try
			set @databaseCount=@databaseCount-1;

			declare @tableFullName nvarchar(1024);
			set @tableFullName='select '''+@databaseName+''',schema_name(schema_id),name from '+@databaseName+'.sys.tables';

			insert into #tempTable(databasename,schemaname,tablename)
			exec sp_executesql  @tableFullName;
			--指向下一個遊標
			fetch next from databaseNameCursor into @databaseName  

		end  try
		begin catch
			continue;
		end catch
	end

/*************7:關閉遊標*************/
close databaseNameCursor;

/*************8:釋放遊標*************/
deallocate databaseNameCursor;

/*************9:查看服務器全部表*************/
select * from #tempTable 

  

SQL腳本使用

先執行註釋1,而後註釋2到註釋8腳本一塊兒執行,最後執行註釋9或者使用臨時表。sql

SQL執行結果

相關文章
相關標籤/搜索